03-实验:DVS365内核、DEMO
操作系统原理实验
操作系统原理实验一、实验目的本实验旨在通过实际操作,加深对操作系统原理的理解,掌握操作系统的基本功能和调度算法。
二、实验环境1. 操作系统:Windows 102. 虚拟机软件:VirtualBox3. 实验工具:C语言编译器(如gcc)、汇编语言编译器(如nasm)、调试器(如gdb)三、实验内容1. 实验一:进程管理在这个实验中,我们将学习如何创建和管理进程。
具体步骤如下:a) 创建一个C语言程序,实现一个简单的计算器功能。
该计算器能够进行基本的加减乘除运算。
b) 使用fork()系统调用创建一个子进程,并在子进程中执行计算器程序。
c) 使用wait()系统调用等待子进程的结束,并获取子进程的退出状态。
2. 实验二:内存管理在这个实验中,我们将学习如何进行内存管理。
具体步骤如下:a) 创建一个C语言程序,模拟内存分配和释放的过程。
该程序能够动态地分配和释放内存块。
b) 使用malloc()函数分配一块内存,并将其用于存储数据。
c) 使用free()函数释放已分配的内存块。
3. 实验三:文件系统在这个实验中,我们将学习如何进行文件系统的管理。
具体步骤如下:a) 创建一个C语言程序,实现一个简单的文件系统。
该文件系统能够进行文件的创建、读取、写入和删除操作。
b) 使用open()系统调用打开一个文件,并进行读取和写入操作。
c) 使用unlink()系统调用删除一个文件。
四、实验步骤1. 安装虚拟机软件VirtualBox,并创建一个虚拟机。
2. 在虚拟机中安装操作系统Windows 10。
3. 在Windows 10中安装C语言编译器、汇编语言编译器和调试器。
4. 根据实验内容,编写相应的C语言程序并保存。
5. 在命令行中使用gcc编译C语言程序,并生成可执行文件。
6. 运行可执行文件,观察程序的执行结果。
7. 根据实验要求,进行相应的操作和测试。
8. 完成实验后,整理实验报告,包括实验目的、实验环境、实验内容、实验步骤和实验结果等。
第一次实验内容10
第一次实验内容10第一次实验内容一、实验名称:Linux基础二、实验类型:验证三、实验目的:1.熟悉Linux操作系统环境,熟悉Linux系统管理内容2.熟练掌握Linux下常用基本命令3.熟悉Linux文件系统结构,熟练使用命令操作文件及目录4.掌握VIM编辑器的使用四、实验准备参考课件1-5章内容及笔记。
五、实验要求实验报告要求包含所有命令的执行结果(可截图)六、实验内容1.认识Linux,熟悉Linux桌面环境(KDE,GNOME),了解Linux文件系统结构。
2.用户创建(学号)----三种方式(命令行,配置文件,GUI)。
3.了解/etc/grub.conf文件内容,了解/etc/inittab文件内容,将系统默认运行级别改为3,重启系统观察现象,再将默认运行级别改为5重启。
4.多用户体验---多用户登录,口令修改、虚拟控制台切换(Alt-Fn),用户通信(write,mesg)。
5.使用普通用户(学号为用户名)登录,运行基本命令:●显示系统日期●列出当前系统中的所有用户●显示你的登录名●显示你的账号和root用户的登录信息●清屏●在你的屏幕上输出“out to lunch”●使用历史命令查看过去输入的命令●运行历史列表中的任意一条命令6.使用普通用户(学号为用户名)登录,对文件和目录操作:●查看/etc/passwd文件,把这个文件复制到你的用户主目录,重命名userfile●列出用户主目录下所有user开头的所有文件●分别使用man/help/info命令查看ls命令的帮助信息●建立文件ls.man(建立:方式man ls >ls.man ),分别使用less,more,tail,head查看ls.man文件内容●创建文件week,内容为星期一至星期日英文单词,每个单词一行●对文件week其排序,并生成排序文件week.s。
●比较week和week.s文件●设置文件userfile的权限为rw-r—r—●分别使用gzip(gunzip),bzip2(bunzip2)对用户主目录下的所有文件进行压缩,解压缩●在当前目录下使用tar命令创建压缩文件(至少包括两个压缩文件)的包●在当前目录下使用tar命令查看压缩包内容●查看当前工作目录●显示当前目录下的所有文件,包括隐藏文件●在当前目录下创建名为mydir的目录●将工作目录切换至目录mydir●在mydir下创建文件myfile1,myfile2●建立myfile1与你用户主目录下myfile3的符号链接●长格式显示mydir目录下的内容,myfile1和myfile2文件大小是多少,文件创建者是谁,不同用户的文件存取权限●删除目录mydir●创建sub1目录,在其下创建sub2子目录,进入sub2目录,并且创建文件myfile●返回用户主目录,复制整个sub1目录中的所有内容,命名为tree●现在你有两个目录树,sub1和tree1,将tree1移至sub1中7.使用vim编辑器编辑文件:在用户主目录下,用vim建立一个名为vitest的文件,文件内容12个月份的英文单词。
基于DM365的多线程视频采集和网络传输
孔 姗 姗 杨 刚 金 立 左 ( 东 南大学 自动化 学院 , 江苏 南京 2 1 0 0 9 6 )
摘
要
以D a V i n c i 系列的 T MS 3 2 0 摄 像 头采 集视 频 数 据 , 通过 L i n u x操 作 系统 的 V 4 L 2编 写 驱
关键词 : Da V i n c i , T MS 3 2 0 DM3 6 5, V 4 L 2, Qt
Ab s t r ac t
Thi s p ap er U S e S TMS32 0 DM36 5 ba s i n g on Da Vi n ci s er i e s as t h e pl a t f or m wh i c h cap t u r es t h e v i d eo da t a f r Om f r on t
动 程 序 从 而 实现 视 频 的 采 集 , 并 将 采 集 的 图像 利 用 OS D技术进行 显示, 经过 T CP / I P协 议 将 视 频 传 输 给 上 位 机 , 在 上 位 机
上, 将Y U V格 式 的 图像 转 化 为 R GB格 式 的 图像 , 并利用 Q t 显示 , 得 到 了清 晰 流 畅 的 视 频 图像 。
T M¥ 3 2 0 D M3 6 5是 一款 基 于 D a V i n c i 技 术 的 数 字 多 媒 体 处 理 器 。DM3 6 5的 处 理 器 核 是 A R M9框 架 的处 理 器 , 同 时 支 持 产 品级 的压 缩 算 法 其 中包 括 : H. 2 6 4 、 MP E G一 4 、 MP E G一 2 、 MJ P E G 和V C1 / v v MV 9算 法 ,用 户 可 以根 据 自己 的 应 用 选 择 合 适 的 视 频 算 法 。D M3 6 5支持 多 种 摄像 头 接 口 、多 种 格 式 的视 频 。 T M¥ 3 2 0 D M3 6 5内 部 结 构 主 要 包 括 : AR M9 2 0 E J — S 核 、 视 频 处 理 子系统 V P S S、 2个 视 频 图像 协 处 理 器 ( HD V l C P / MJ CP ) 。 V P S S子 系 统 包 括 视 频 处 理 前 端 V P F E与 视 频 处 理 后 端 V P B E 。 V P F E提 供 了 I S I F / C MO S模 块 的接 口与 视 频 解 码 单 元 。
云计算Demo实验教材
熟悉常用的NX-OS命令(续)
4.查看硬件相关信息
熟悉常用的NX-OS命令(续)
5.查看相关特性(feature)
实验二:部署N5K/N2K启用EtherChannel
实验目的: 通过本实验,您将学习到如何通过配置 EtherChannel连接Nexus 2000和Nexus。 5000。 实验内容: 通过配置EtherChannel,实现Nexus 2000和Nexus 5000的互联。
步骤1:配置VDC,开启OTV特性
DC-A-N7010中建立VDC03 vdc VDC03 allocate interface Ethernet1/9-16 allocate interface Ethernet3/13-24 配置VDC03管理接口地址及VRF vrf context management ip route 0.0.0.0/0 10.75.58.1 interface mgmt0 ip address 10.75.58.172/24 配置建立VLAN 101-104 vlan 101-104 配置开启OTV及LACP特性 feature otv feature lacp
实验目的: 通过这个实验你将会学习基本的配置关 于N7000交换机的VDC配置,同时熟悉思科 N7K交换机中VDC理念及用途。 实验内容: VDC基本配置命令 资源类配置方法 分配物理接口 VDC中相关常用命令及使用
步骤一:建立VDC
步骤二:为VDC分配物理接口
步骤三:观察VDC缺省资源模板
实验四拓扑
步骤1:配置启用vPC和LACP特性
步骤2:创建vPC域及相应配置
步骤3:配置vPC Peer Link
步骤4:配置FEX用于对N2K管理
02-DM365 启动机制与Boot
User Bootloader
继续在DEVICE_init函数中,下面是调用 DEVICE_DDR2Init函数来配置DDR控制器,这是 UBL中重要的一部分,如果硬件电路需要更换内存 芯片的话,需要在UBL中修改这个函数,即按照芯 片手册来配置DDR控制寄存器中的相关参数,比如 时序,BANK数,页大小等。 而后调用DEVICE_EMIFInit函数来配置EMIF模块, 调用DEVICE_UART0Init函数来配置串口0,调用 DEVICE_TIMER0Init函数来配置TIMER0,调用 DEVICE_I2C0Init函数来配置I2C控制器,都是操作 某一模块的控制寄存器实现。
Board ,cpu, lib_ppc, lib_arm, include
平台无关
Common, net, driver, fs
工具和文档
Tools, doc
U-boot启动过程的几个阶段
在Flash中运行汇编程序,将Flash中的启动代码复 制到RAM中,同时创造环境准备运行C程序; 在RAM中运行,对硬件进行初始化; 设置内核参数的标记列表,复制镜像文件,进入内 核的入口参数
Bootloader特点
Bootloader不属于操作系统内核,采用汇编语言编 写,因此针对不同的CPU体现结构,这一部分代码 不具有可移植性; 在移植操作系统时,这部分代码必须加以改写; Bootloader不但依赖于CPU的体现结构,而且依赖 于嵌入式系统板级设备的配置;
Bootloader的操作模式
TI DM36X 启动机制
BTSEL[2:0]=001时,系统加电/复位后ARM处理器 从AEMIF 执行引导启动代码,即从外部存储器 OneNand或Nor Flash启动。 AIROM支持以下启动模式 BTSEL[2:0]=000,ARM NAND Boot BTSEL[2:0]=010,ARM MMC/SD Boot BTSEL[2:0]=011,ARM UART Boot BTSEL[2:0]=100, ARM USB Boot
DM365系统烧写
开发板DM365系统的烧写( DM365系统的烧写主要包括四方面的烧写:1.UBL的烧写 2.U-BOOT的烧写3.uImage的烧写 4.root文件系统的烧写。
UBL、U-BOOT的烧写是基于CCS3.3,而uImage 的烧写是基于TFTP,root文件系统的烧写是基于NFS )1. 基于CCS3.3烧写UBL、U-BOOT(1) CCS3.3启动完毕后,选择ARM端打开(2) 加载GEL,连接ARM(ctrl+c)(3)将Flash_Writer目录下的UBL_DM36x_NAND.bin与u-boot.bin两个文件拷贝到任意盘符根目录下,例如D:\(4) 在CCS中用File Load Program….命令,加载Flash_Writer目录下的NANDWriter_DM36x.out文件;然后点击运行,运行程序;(5) 程序会弹出下图所示对话框,输入UBL所在路径,如图输入D:\UBL_DM36x_NAND.bin,点击OK,进行UBL的烧写;(6)Ubl烧写完成后,将会弹出如下对话框,要求输入u-boot文件的路径,如图输入D:\u-boot.bin,点击OK,进行u-boot的烧写。
等待一会之后还会弹出两次下面的对话框,两次都点击OK,按默认的入口地址即可;在Stdout窗口将会显示“NAND boot preparation was successful!”字样,说明烧写完成;到此已烧写完成UBL、U-BOOT.2.基于TFTP烧写uImage(1)首先将DaVinci Linux Develop Software文件夹下SEED_DVS365-SDK.tar.gz复制到Linux下的/opt目录下,并进行解压缩安装:Host #tar -zxvf SEED_DVS365-SDK.tar.gz (过程大概需要10分钟)。
解压完成后得到dvsdk_2_10_00_17、mv_pro_5.0、nfs三个文件夹。
基于TMS320DM365的网络摄像机底层软件应用
d i O3 6 di n1 6 - 7 52 1 .50 9 o: .9 9 .s .5 3 4 9 . 2 .0 l s 0 0
基于 T 3 0 M3 5的 MS 2 D 6 网络摄像机底层软件应用
王 洋 ,王 磊 ,项 昌晨
(. 1 同济 大 学 电子 与信 息工程 学 院 ,上 海 2 091 0 02 (. 2 同济大 学 中德 学院 ,上 海 2 09) 0 02
Ke ywor :TM S3 DM 3 u e i g s fwa e tu t e o ot r ds 2O 65 nd dy n ot r sr cur fs fwae
近 几 年 ,随着 计 算 机 技 术 和 电子 技 术 的飞 跃 式 发 展 ,通 过不 断 的系 统 功 能 集 成 和优 化 ,网络
t i a e ,a L n x- a e mb d e y t ms wi e d s r e b s d n t e d v lp d a r w t h i h s p r i u b s d e e d d s se l b e c i d a e o h e eo e c me a i t e Chp p l b h T MS 2 DM3 5 I i cu e e sr cu e o e u d ryn ot r , e in a d a p ia in T e S — al d u d r i g 30 6 . t n l d st t t r f h n e l ig s f h u t wa e d s n p l t . h O c l n e l n g c o e y s f r s ic u i g t e L n x k r e , h n e li g d ie s a d sat p f e , h ot a e o h s l t r s t e ot e i n l d n h i u e l t e u d r n r r n t r i s t e s f r ft e e p af ms i h wa n y v u l w o p e e u st a d f u d t n o ee t e n t o k c me a a p ia in d v l p n . r r q i e n o n a i ft n i ew r a r p l t e e o me t i o h r c o
DM365 NAND启动模式解析
DM365 NAND启动模式解析首先,读取NAND的ID,可以从RBL的设备信息表中得到一些重要信息,然后,RBL在block1 page0处开始搜索UBL描述符。
若没有找到正确的UBL,会继续搜索下面的块,一直到block24结束。
这样做是为了跳过坏块,24个块几乎对所有的NAND设备都足够了。
当找到UBL标识之后,对应的块号(从1到24)被写到ARM内部RAM(指令RAM)的最后32位(0x7ffc-0x8000),假设通过JTAG通过读取这32位,你能够确定RBL是在哪个块中找到了一个正确的UBL标识。
如果搜索完24个块后没有找到正确的UBL标识,RBL会尝试从SD卡启动。
找到正确的UBL之后,读取并且处理UBL描述符,这个描述符提供了加载和控制跳转到UBL的必要信息。
然后UBL被读取并且处理。
RBL首先可能会使能一些更快的EMIF组合和基于UBL描述符中信息的指令cache操作。
通过UBL描述符可以知道在拷贝UBL期间是否使用了DMA。
一旦用户指定的启动状态被设置,RBL就复制UBL到ARM内部RAM,并且从地址0x0000 0020处启动。
NOTE:真正的拷贝实际上是从ARM内部数据RAM区0x10020-0x1781F的低30KB的空间。
将UBL读取到ARM IRAM的时候,NAND RBL使用4位的ECC来检测是否发生读错误。
若发生了错误,则通过ECC纠正算法来纠正错误。
通过冗余(24 blocks)和出错恢复来保证防止读错误。
NAND启动流程如下图所示:NAND UBL descriptor格式如下表:NOTE:ARM IRAM 的起始32个字节是ARM系统的中断向量表(IVT)(8个向量,每个4字节),复制的UBL从这32个字节的IVT之后开始启动。
在UBL descriptor中,不同的NAND启动模式可以设置不同的MAGIC IDs,下表列出了UBL标识:NAND启动详细流程:1、初始化RAM1的高2K栈空间(0x7800-0x7fff)。
DM365-OSD菜单操作
DM365-OSD小结1、OSD线程的流程OSD的功能就是在视频上显示预定的内容,视频是由一帧一帧的图像组成的,因此OSD 的作用就是在每一帧上打上印记。
OSD的流程如图1所示:图1关于有帧消息的发送:当有一个新的帧产生的时候,通过调用该函数发送新数据消息命令。
int VIDEO_swosdRun(int tskId, int streamId, OSA_BufInfo *pBufInfo)该消息命令的数据结构:typedef struct _videoSWOSDMessage{int streamId; //对应的码流OSA_BufInfo *pBufInfo; //这里有帧的数据}videoSWOSDMessage;2、OSD环境的创建OSD环境的创建,包括初始化、字体的设置、创建句柄以及窗口数目的划分、窗口有参数的设置、字符转化成YUV格式。
初始化:在调用其他的OSD函数之前,一定要调用SWOSD_init函数完成初始化,返回0成功,-1失败。
int SWOSD_init();字体的设置:字体的设置,就像doc设置字体一个意思,至于为什么这么操作,不清楚。
照着例子来吧。
SWOSD_Fontdata为字体的数据结构体。
SWOSD_createFontDatabase函数的意思,大概就是把能够显示的字符按照fontAddr的格式转化成YUV格式存放在fontDB中。
typedef struct {char format; //视频的格式YUV420p还是YUV422iint charWidth; //字符的宽度int charHeight; //字符的高度int totFontWidth;int totFontHeight;int totFontLineoffset;char *fontAddr; //字体对应YUV格式数据的存储char *fontAddrUV;int * fontDB_Y;//所有能够显示字符的YUV格式int * fontDB_UV;} SWOSD_Fontdata;int SWOSD_createFontDatabase(int* fontDatabaseY, int* fontDatabaseUV,char * swosd_stringPattern, SWOSD_Fontdata * fontInfo);#define SWOSD_STRINGPA TTERN"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz:;'/\\+-_()&$#.0123456789"下面是一个设置字体的例子eg:SWOSD_Fontdata fontInfo;fontInfo.format = SWOSD_FORMA TYUV420p;fontInfo.charWidth = SWOSD_CHARWIDTH_462_12;fontInfo.charHeight = SWOSD_CHARHEIGHT_462_12;fontInfo.totFontWidth = SWOSD_STRINGWIDTH_462_12;fontInfo.totFontHeight = SWOSD_CHARHEIGHT_462_12;fontInfo.totFontLineoffset = SWOSD_STRINGWIDTH_462_12;fontInfo.fontAddr = fontBuff462_Y1;fontInfo.fontAddrUV = fontBuff462_UV1;SWOSD_createFontDatabase(fontDB462_Y1,fontDB462_UV1,(char *)SWOSD_STRINGPA TTERN,&fontInfo);创建句柄以及窗口数的划分:通常为了控制码流,一般视频会有多个码流,每个码流显示的内容一样,只是有的像素高,有的像素低。
操作系统文件管理实验
操作系统实验三:文件管理一.实验目的1.加深对文件,目录,文件系统等概念的理解。
2.掌握UNIX文件系统的目录结构。
3.掌握有关UNIX文件系统操作的常用命令。
4.了解有关文件安全方面的知识。
二.实验内容1.使用pwd,cd,ls等命令浏览文件系统。
2.使用cat,cp,mv,head,tail,rm等命令查看你的文件。
3.使用ln命令进行文件的硬连接和符号连接。
4.使用find,grep命令进行文件查找和模式匹配。
5.使用chmod命令修改文件的权限。
三.实验步骤启动LINUX系统,首先以超级用户ROOT身份登录注册后(占用第一用户平台),然后以普通用户Mengqc(或其他用户名)身份登录注册后,在第二用户平台(<alt>+F2)练习文件管理有关命令.一般在[mengqc @ localhost mengqc]$提示符下键入有关命令。
1.浏览文件系统〈1〉运行pwd命令,确定你当前的工作目录(为/ home/mengqc)。
〈2〉利用以下命令显示当前工作目录的内容:(理解各字段意义。
)ls –l〈3〉运行以下命令:(反馈信息中.代表本身目录,..代表其父目录;选项a可以显示隐藏文件;选项i可以显示文件的I节点号)ls –ai〈4〉使用mkdir命令建立一个子目录subdir,并用ls查看当前目录。
下附本实验文件目录结构。
Mkdir subdir/根目录Ls –lBin dev home rootMengqc mlwjsubdirfa(file1)〈5〉使用带-d选项的ls命令,你只能看到有关子目录的信息(.表示本身目录)。
Ls -d〈6〉使用cd命令,将工作目录改到根目录(/)上。
①用相对路径将工作目录改到根目录。
Pwd 显示当前目录为 /home/mengqcCd .. 相对路径,返回上一级。
Pwd 反馈显示当前目录为 /homeCd .. 相对路径,再返回上一级。
Pwd 反馈显示当前目录为 /Cd /home/mengqc 恢复本身目录(也可以cd↙ ).Pwd 反馈显示当前目录为 /home/mengqc②用绝对路径将工作目录改到根目录。
DVE实用用户手册
DVE用户指导手册本文档只供交流和学习使用,欢迎您指出本文档中的不足和提供您宝贵的建议!!1入门 (5)基本要求: (5)启用调试 (5)编译时间选项 (6)必要文件 (6)调用DVE (7)64位技术支持平台 (8)后台处理程序: (8)交互式界面 (9)脚本命令(Scripts): (9)DVE的日志文件 (10)在命令行运行仿真 (10)DVE与VCS, SystemVerilog, 和NTB (OV 和SV) (10)VCS MX和VHDL (11)检查点还原的方法 (12)C,C++,和SystemC代码 (12)在GUI界面运行仿真 (13)后台处理程序(Post-processing) (13)创建并且运行一个交互式的会话 (14)运行仿真 (15)工具栏的应用 (16)模拟器(Simulator)菜单命令的应用 (17)命令行的应用 (18)保存会话或布局图 (18)保存一个布局图会话 (20)载入已保存的会话(session) (20)关闭数据库 (20)退出DVE (21)2 图形化界面应用 (22)DVE窗口属性概述 (22)DVE窗格(panes) (23)管理DVE窗口 (23)管理目标窗格 (24)停放与移除窗口和窗格 (25)拖拽和删除一个已停放的窗口 (25)菜单栏和工具栏的应用 (26)菜单栏参考 (27)文件菜单 (28)编辑菜单 (29)视图查看菜单 (30)仿真菜单 (32)信号菜单 (34)作用域菜单 (36)追踪菜单 (37)窗口 (38)信号 (39)模拟器 (39)扩大或缩小 (41)扩大或缩小和变动记录 (41)上下文记录命令菜单的应用 (42)设置显示的首选项(Preferences) (42)自定义显示 (42)3 使用层次数据和信号群组窗格 (49)层次窗格 (49)给信号赋值 (50)4 使用源窗口 (50)管理交互仿真中的断点 (51)控制源窗口中的行断点 (51)在对话框中管理断点 (52)行断点 (52)时间断点 (53)信号断点 (54)断言断点 (55)任务/函数断点 (56)编辑断点 (57)5 运用波形窗口 (58)建立目标窗口 (58)设置波形窗口首选项 (58)重命名信号组 (60)过滤信号 (60)添加信号分离器 (60)设置复制信号的显示 (60)创建一个用户定义基数 (61)管理用户定义基数 (61)导入和导出一个用户定义基数 (62)运用波形窗 (62)制定波形显示 (63)指针和标记 (64)使用指针 (64)运用标记 (65)移动,隐藏和删除标记 (67)扩展和收缩波形信号 (68)在图像窗中搜索 (68)比较信号,域和组 (68)建立总线并设置表达式 (70)使用总线/表达式对话框 (70)总线/表达式列表框 (71)显示/隐藏细目表格 (71)创建一个总线 (72)修改总线成分 (73)管理表达式列表 (73)移位信号 (74)8 断言与覆盖率 (75)SV断言的编译 (75)断言结果的观察 (75)显示标准的设置 (76)断言的调试 (77)观察波形窗口中断言的失效 (78)观察断言失效时间增量 (79)9 动态驱动和载入的跟踪 (81)跟踪功能 (82)支持的功能 (83)不支持的功能 (83)Vera的功能 (83)跟踪驱动程序 (84)跟踪载入 (85)Vera的功能 (86)1入门本章描述了怎样开始使用DVE它涵盖以下内容:• 基本要求• 启用调试• 调用DVE• 在命令行运行仿真• 在GUI界面运行仿真• 保存会话或布局图• 载入已保存的会话• 关闭数据库• 调用DVE基本要求:您必须使用相同版本的VCS和DVE,以确保任意仿真中任意问题都能调试。
操作系统实验
操作系统实验报告(一)Linux基本操作与编程(验证性 2学时)1、实验目(de):1)熟悉Linux操作系统(de)环境和使用.2)了解LINUX系统(de)安装过程.(注:表示可选择)3)掌握Linux环境下(de)命令操作.2、实验内容:(1)完成LINUX系统(de)登录,启动终端.进行下列操作并记录结果(要求:结果以屏幕截图表示).1)运行pwd命令,确定你当前(de)工作目录.2)利用以下命令显示当前工作目录(de)内容: ls –l3)运行以下命令: ls –al4)使用mkdir命令建立一个子目录subdir.5)使用cd命令,将工作目录改到根目录(/)上.6)使用ls-l命令列出/dev(de)内容.7)使用不带参数(de)命令cd改变目录,然后用pwd命令确定你当前(de)工作目录是哪里8)使用命令cd ../..,你将工作目录移到什么地方(2)在LINUX下查看你(de)文件.1)利用cd命令,将工作目录改到你(de)主目录上.2)将工作目录改到你(de)子目录subdir,然后运行命令: date > file1 将当前日期和时间存放到新建文件file1中.3)使用cat命令查看file1文件(de)内容.4)利用man命令显示date命令(de)用法: man date5)将date命令(de)用法附加到文件file1(de)后面:man date >> file16)利用cat命令显示文件file1(de)内容.7)利用ls -l file1命令列出文件file1(de)较详细(de)信息.运行ls -l/bin 命令显示目录(de)内容.8)利用ls -l/bin|more命令行分屏显示/bin目录(de)内容.9)利用cp file1 fa命令生成文件file1(de)副本.然后利用ls -l命令查看工作目录(de)内容.10)用cd命令返回你(de)主目录,输入命令ls –l后,解释屏幕显示(de)第一列内容(de)含义.(3)编写能输出“Hello world”问候语(de)C程序,并在终端中编译、执行.要求记录所使用(de)命令及结果.操作步骤:1)在文本编辑器中,编写C程序如下:include ""main(){ printf("hello"); }2) 在终端中,用gcc命令进行编译,生成可执行文件a.gcc –o a3) 在终端中执行a (de)命令如下:./a(4)编写一个程序:显示信息“Time for Play”,并能在后台运行一段时间(自定义)后,弹出信息提醒用户.要求记录所使用(de)命令及结果.(提示:使用sleep(s)函数)3、实验结果分析:(对上述实验内容中(de)各题结果,进行分析讨论.并回答下列问题)(1)进程包括哪些特征间断性, 失去封闭性, 不可再现性, 动态性, 并发性, 独立性(2)在Linux中,如何设置前、后台命令和程序(de)执行命令后直接加 & ,这个命令就在后台执行;正在运行(de)命令,使用Ctrl+z ,就挂起; jobs命令,可以现实后台,包括挂起(de)命令;使用 bg %作业号就可以把挂起(de)命令在后台执行;使用 fg %作业号就可以把后台命令调到前台(3)你所使用(de)Linux系统(de)内核版本是多少用什么命令查看内核版本目前你所了解(de)各发行版本(de)情况如何Linux version (gcc version (Red Hat (GCC) ) 1 SMP Tue Jan 2911:48:01 EST 2013(4)你对Linux系统有什么认识linux是一款开放性(de)操作系统,也可以说成是开放(de)源代码系统,这些代码可以完全自由(de)修改可以再任何(de)计算机上去运行它,也就是“可移植性”,其次大家都知道,linux是由UNIX(de)概念所开发出来(de),所以它也继承了UNIX(de)稳定和效率(de)特点4、总结:你对本次实验有什么体会或看法.操作系统实验报告(二)文件访问权限设置与输入输出重定向(2学时)一、实验目(de)1、掌握linux(de)文件访问权限设置.2、熟悉输入输出重定向和管道操作.二、实验内容1、启动进入红帽linux系统2、设置文件权限:在用户主目录下创建目录test,进入test目录,用vi 创建文件file1,并输入任意(de)文字内容.用ls -l显示文件信息,注意文件(de)权限和所属用户和组.对文件file1设置权限,使其他用户可以对此文件进行写操作:chmod o+w file1.用ls -l查看设置结果.取消同组用户对此文件(de)读取权限:chmod g-r file1.查看设置结果.用数字形式来为文件file1设置权限,所有者可读、可写、可执行;其他用户和所属组用户只有读和执行(de)权限:chmod 755 file1.设置完成后查看设置结果.3、输入、输出重定向和管道(1) 输出重定向用ls命令显示当前目录中(de)文件列表:ls –l.使用输出重定向,把ls命令在终端上显示(de)当前目录中(de)文件列表重定向到文件list中:ls –l > list.查看文件list中(de)内容,注意在列表中会多出一个文件list,其长度为0. 这说明shell是首先创建了一个空文件,然后再运行ls命令:cat list.再次使用输出重定向,把ls命令在终端上显示(de)当前目录中(de)文件列表重定向到文件list中.这次使用追加符号>>进行重定向:ls –l >> list.查看文件list(de)内容,可以看到用>>进行重定向是把新(de)输出内容附加在文件(de)末尾,注意其中两行list文件(de)信息中文件大小(de)区别:cat list.重复命令ls –l > list.再次查看文件list中(de)内容,和前两次(de)结果相比较,注意list文件大小和创建时间(de)区别.(2) 管道who |grep root命令(de)结果是命令ls –l |wc –l结果是4、退出linux系统操作步骤:在主菜单上选择“注销” ->关闭计算机.三、实验结果与讨论(根据实验结果回答下列问题)1. 文件(de)权限如下:-rw-r—r-- 1 root root 19274 Jul 14 11:00回答:-rw-r—r-- (de)含义是什么答:是LINUX/FTP(de)简易权限表示法:对应于本用户-所在组-其他人(de)权限,每一个用执行(x)-读取(r)-写入(w)如本题若是说自己可以读取写入不可以执行,所在组和其他人只能读取.2、文件(de)所有者添加执行权限(de)命令是答:chmod u+x 、赋予所有用户读和写文件权限(de)命令是四、答:chmod a+w,a+r 个人体会(你对本次实验有什么体会或看法)操作系统实验报告(三)文件和目录管理一、实验目(de)1) 掌握在Linux系统下(de)文件和文件系统(de)概念及命令;2) 掌握Linux系统下(de)目录操作.二、实验内容1. 进入linux终端后,用命令(de)操作结果回答下列问题:1)vi(de)三种工作模式是其中不能进行直接转换(de)是什么模式到什么模式命令模式、文本输入模式、末行模式命令模式不能直接到末行模式2)在vi中退出时,保存并退出(de)操作步骤是Ese:wq3)用vi 创建myfile1文件,并在其中输入任意文字一行,创建myfile2文件,任意输入文字3行.请问执行命令:cat <myfile1 >myfile2 后,myfile2中还有几行内容该命令(de)作用是用命令操作验证你(de)回答.myfile2中还有1行内容该命令(de)作用是替换myfile(de)内容4)请用至少两种不同(de)命令创建一个文本文件(),在其中写入“我是2014级学生,我正在使用Linux系统.”,记录命令及执行结果.1、Vi创建2、5)用___pwd________命令可查看所创建文件(de)绝对路径,写出它(de)绝对路径__/root_________;用___ls -l________命令查看该文件(de)类型及访问权限,其访问权限(数字和字母)分别是多少__-rw- r- - r- - 6 4 4______________.6)若将该文件(de)访问权限修改为:所有者有读写权限;其他用户只读;同组用户可读写,请写出命令,并记录结果.7)查找my开头(de)所有文件,可___find my_________命令,写出命令并记录结果8)在/home下创建子目录user,并在其中创建2个文件,名为file1和file2,file1(de)内容是/root目录(de)详细信息;file2(de)内容任意,最后将这两个文件合并为file3文件,请先写出命令序列,并在终端中验证,记录结果.2. 文件及目录操作,写出操作所使用(de)命令,并记录结果.在终端中完成下列命令操作,并记录结果在root用户主目录下创建一个mydir子目录和一个myfile文件,再在mydir下建立d1和d2两个子目录.查看mydir和myfile(de)默认权限查看当前myfile和mydir(de)权限值是多少将myfile文件分别复制到root 和dd1(de)主目录中将root主目录中(de)myfile改为yourfile通过从键盘产生一个新文件并输入I am a student查找文件是否包含student字符串三、实验结果与分析,回答下列问题:1、能够创建文件(de)命令有哪些vi 和cat>name2、能够查看当前目录(de)绝对路径(de)命令是pwd3、Linux中按用户属性将用户分成哪些类型根据文件(de)访问权限,用户又被分成哪些类型能够查看文件访问权限(de)命令是用户同组其他可读可写可执行 cat f1四、小结(本次实验(de)体会或小结)操作系统实验报告(四)作业调度算法模拟(验证性2学时)1、实验目(de):1)掌握作业调度(de)主要功能及算法.2)通过模拟作业调度算法(de)设计加深对作业管理基本原理(de)理解.3)熟悉Linux环境下应用程序(de)编程方法.2、实验内容:(1)作业调度算法(FCFS)编程模拟:编制一段程序,对所输入(de)若干作业,输入、输出数据样例如下表所示.按FCFS算法模拟调度,观察、记录并分析调度(de)输出结果情况.输入输出样例1:FCFS算法include <>include <>define SIZE 5struct Job_type{char no[2]; o,&job[i].tb,&job[i].tr);printf("输入作业顺序:\n");for(i=0;i<SIZE;i++)printf("\t%s\t%d\t%d\n",job[i].no,job[i].tb,job[i].tr);}void fcfs(){ int i,j,t=0,tw=0,tt=0;for(i=0;i<SIZE-1;i++)for(j=i+1;j<SIZE;j++)if(job[i].tb>job[j].tb){x=job[i];job[i]=job[j];job[j]=x;}printf("FCFS调度结果:\n");printf("开始时间作业号到达时间运行时间完成时间等待时间周转时间\n");for(i=0;i<SIZE;i++){printf(" %d",t);t=t+job[i].tr;tw=t-job[i].tb-job[i].tr; b; o,job[i].tb,job[i].tr,t,tw,tt);}}void main(){load();fcfs();}(2)作业调度算法(SJF)编程模拟:编程实现由短作业优先算法,分别用下面两组输入、输出数据样例进行模拟,观察分析运行结果.输入输出样例2:SJF算法输入输出A 0 4B 0 3C 0 5D 0 2E 0 1A 0 6 10 10B 0 3 6 6C 0 10 15 15D 0 1 3 3E 0 0 1 1include <>include <>define SIZE 5struct Job_type{char no[2]; o,&job[i].tb,&job[i].tr);printf("输入作业顺序:\n");for(i=0;i<SIZE;i++)printf("\t%s\t%d\t%d\n",job[i].no,job[i].tb,job[i].tr);}void sjf()n=i; pl[i].pfn=ERR;}for(i=1;i<total;i++){ pfc[i-1].next=&pfc[i];pfc[i-1].pfn=i-1;}pfc[total-1].next=NULL;pfc[total-1].pfn=total-1;freepf_head=&pfc[0];}void FIFO(int total){ int i,j;pfc_type p,t;initialize(total);busypf_head=busypf_tail=NULL;for(i=0;i<page_len;i++){if(pl[page[i]].pfn==ERR){ diseffect+=1;if(freepf_head==NULL){p=busypf_head->next;pl[busypf_head->pn].pfn=ERR; freepf_head=busypf_head;freepf_head->next=NULL;busypf_head=p;}p=freepf_head->next;freepf_head->next=NULL;freepf_head->pn=page[i];pl[page[i]].pfn=freepf_head->pfn;if(busypf_tail==NULL)busypf_head=busypf_tail=freepf_head; else{ busypf_tail->next=freepf_head;busypf_tail=freepf_head;}freepf_head=p;}}printf("FIFO:%d",diseffect);}main(){ int i; int k;printf(“请输入页(de)引用序列:\n”); for(k=0;k<page_len;k++)scanf("%d",&page[k]);for(i=4;i<=7;i++){printf("%2d page frames ",i);FIFO(i);}参考程序LRU算法,略三、实验结果分析:(对上述实验各题所使用(de)原始数据、调试数据与状态(包括出错)及最终结果进行记录并分析.)随着块数(de)增加,缺页数目也减少,4个实验中3个实验(de)块数增加到了5以后,即使块数再增加,缺页数目也是保持不变.只有实验4,块数增加到7以后,缺页数目又再次减少了四、总结:你对本次实验有什么体会或看法.。
DM365上运行jpegdec程序全记录
DM365上运行jpegdec程序记录1.说明DVSDK版本:dvsdk_2_10_00_17路径:ROOTDIR = /opt/dvsdk_2_10_00_17/dm365_codecs_01_00_06/packages/ti/sdo/codecs/jpegdec/ 源代码:$(ROOTDIR)/apps/Client/Test/Src头文件:$(ROOTDIR)/apps/Client/Test/Inc2.源代码部分关于源代码可以简单看一下jpgdTestApp.c而头文件需要注意定义内存大小的地方,如:testFramework.h其中一段:应用在jpgdTestApp.c中,如:从上面代码可以看出:需要4块连续内存,即CMEM,如下:EXTERNAL_DATA_MEM_SIZE: 16*1024 = 16384RINGBUF_SIZE: 1024*4096 = 4194304JPEG_MAX_NUM_JPEG_BYTES: 3*1280*960 = 3686400JPEG_MAX_NUM_YCC_BYTES: 3*1280*960 = 36864003.写loadmodules.sh脚本4.准备运行4.1.修改Testvecs.cfg文件而Testparams.cfg文件中的宽度和长度分别是720x480,所以不用修改。
4.2.修改源代码并进行编译修改jpgdTestApp.c的第261行代码如下:先执行make clean再make注:直接make不行,因为有几个c文件的时间戳是未来的,就不编译了。
最后会生成jpgdec-r可执行文件。
4.3.所需文件如果在ARM端运行,则需要的文件如下:Testparams.cfg Testvecs.cfg JPG文件下面是本人的文件结构:myJpgDec|-jpgdec-r|-TestVecs| |-Config| | |-Testparams.cfg| | |-Testvecs.cfg| |-Input| | |-frida_720x480.jpeg| |-Output| |-module| | |-cmemk.ko| | |-dm365mmap.ko| | |-edmak.ko| | |-irqk.ko| | |-loadmodules.sh注:如果你找不到cmemk.ko、dm365mmap.ko、edmak.ko、irqk.ko等4个文件,启动365板子,在demo 演示程序中就有,直接拿来用就可以了。
DVS3XX高清网络相机解决方案
图像预处理ISP 高性能编码: H.264 720p or 1080p 30fps 可编程客户智能算法 $60-$100 eBOM
特点优势 H.264 HP 1080p60 720MHz C674x定浮 点DSP可实现多种高级 分析算法 eBOM待定不详
• TI DM36x(VA)系列是专门针对高清(智能)网络相机的完整解决方案, 有相当强的市场竞争力。最明显的五大优势为:高品质图像,高性能编码, 智能分析,功耗成本低,产品线完善
7月中旬到货
9月正式发布
2011-4-11
5
IP Camera相机选型 相机选型
Entry-Level Mid-end Advanced
DM368
DM365 DMVA1 / 2
Centarus
DM6435
OR
IP Camera
特点优势 图像预处理ISP 高性能编码: H.264 D1 or 720p 30fps 入门级智能分析算法 成本低廉 $30-$60 eBOM 特点优势
正式版V1.1 OV /SONY f1.2 0.2lux / 0.01lux 不开放CMOS 资料,需购买 Appro生产的 CMOS模块*
正式版V1.9 测试版V2.x (不 断更新中) 客户自行开发 CMOS模块, 可购买Appro 2A($0.75)或 TI 2A($1.00)
OV 低照度f1.2 0.2lux / 0.01lux SONY还多一个 >100dB WDR 不开放CMOS 资料,需购买 Appro生产的 CMOS模块*
• lsp是linux内核源码,交叉编译环境需要从TI官网下载,wis-streamer的源码 在/ipnc/ipnc_app/network/live/appro。可以确认用光盘提供的源码可以正确 编译出全套IPNC应用程序
《微机原理及应用技术》实验指导书
在执行过第二步后,如有出错信息时,就不能跳跃到第四步去,如果强行执行第四步, 将无任何有效结果。
说明:要清楚,在第二步中检测出的错误均为每一条语句的语法或用法错误,它并不能 检测出程序的逻辑设计(语句安排位置)错误,所以就要记好出错的行号。在记录行号后, 就应再次执行第一步,这时的操作应是打开已编好的源程序(以 EDIT 为例:在 DOS 提示符 下键入:
3
《微机原理》实验指导书
段寄存器 CS,DS,ES 和 SS 均指向 DEBUG 末尾的第一个段。 IP 寄存器置为 0100H。栈指针 SP 指向尾部或装入程序的暂存部分的底部。 其余寄存器皆取零值,但若用户调用时含文件说明,则 CX 含文件长度(长度大于
64K 时 BX 含长度的高位);标志为各自的复位值;驱动器传送地址在代码段位移 80H 处。 注意:若 DEBUG 装入扩展名为.EXE 的文件,则 DEBUG 需重定位且设置段寄存器指示器为 文件中所定义的值。但 DS,ES 指向最低可用段处的程序区前缀。BX 和 CX 为文件容量值。 而 .EXE 文件如果在连接时选择了装入内存高处的参数,则该程序装入高处。
溢出 OF 有/无 OV/NV
方向 DF 减/增 DN/UP
中断 IF 开/关 EI/DI
符号 SF 负/正 NG/PL
零 ZF 零/非 ZR/NZ
辅助 AF 有/无 AC/NA
奇偶 PF 偶/奇 PE/PO
进位 CF 有/无 CY/NC
(2)显示指定寄存器内容
例如:-R AX <Enter>
-R F <Enter>
EDIT filename.asm 回车,依据行号进行修改并存盘,再次进行汇编,直至第二步通过 为止。便可继续向下执行第四步。
操作系统实验报告实验3_1
操作系统实验报告实验3_1一、实验目的本次实验的主要目的是深入理解操作系统中进程管理的相关概念和原理,通过实际操作和观察,掌握进程的创建、调度、同步与互斥等关键机制,提高对操作系统内核工作原理的认知和实践能力。
二、实验环境本次实验在装有 Windows 10 操作系统的计算机上进行,使用了Visual Studio 2019 作为开发工具,编程语言为 C++。
三、实验内容与步骤(一)进程创建1、编写一个简单的 C++程序,使用系统调用创建一个新的进程。
2、在父进程和子进程中分别输出不同的信息,以区分它们的执行逻辑。
```cppinclude <iostream>include <windowsh>int main(){DWORD pid;HANDLE hProcess = CreateProcess(NULL, "childexe", NULL, NULL, FALSE, 0, NULL, NULL, NULL, &pid);if (hProcess!= NULL) {std::cout <<"Parent process: Created child process with PID "<< pid << std::endl;WaitForSingleObject(hProcess, INFINITE);CloseHandle(hProcess);} else {std::cerr <<"Failed to create child process" << std::endl;return 1;}return 0;}```(二)进程调度1、设计一个多进程并发执行的程序,通过设置不同的优先级,观察操作系统对进程的调度情况。
2、记录每个进程的执行时间和等待时间,分析调度算法的效果。
```cppinclude <iostream>include <windowsh>DWORD WINAPI ProcessFunction(LPVOID lpParam) {int priority =(int)lpParam;DWORD start = GetTickCount();std::cout <<"Process with priority "<< priority <<"started" << std::endl;for (int i = 0; i < 100000000; i++){//执行一些计算操作}DWORD end = GetTickCount();DWORD executionTime = end start;std::cout <<"Process with priority "<< priority <<" ended Execution time: "<< executionTime <<" ms" << std::endl;return 0;}int main(){HANDLE hThread1, hThread2;int priority1 = 1, priority2 = 2;hThread1 = CreateThread(NULL, 0, ProcessFunction, &priority1, 0, NULL);hThread2 = CreateThread(NULL, 0, ProcessFunction, &priority2, 0, NULL);if (hThread1!= NULL && hThread2!= NULL) {SetThreadPriority(hThread1, THREAD_PRIORITY_LOWEST);SetThreadPriority(hThread2, THREAD_PRIORITY_NORMAL);WaitForSingleObject(hThread1, INFINITE);WaitForSingleObject(hThread2, INFINITE);CloseHandle(hThread1);CloseHandle(hThread2);} else {std::cerr <<"Failed to create threads" << std::endl;return 1;}return 0;}```(三)进程同步与互斥1、实现一个生产者消费者问题的程序,使用信号量来实现进程之间的同步与互斥。
瑞泰DM365开发板实验全过程
Host # cd /opt/dm365/project/dm3xx_sd_boot-6 Host # make clean Host # make all Host # make install (若出现执行不成功, 可添加环境变量设置: Host # export PATH=$PATH:./bin.x86:/sbin ) 2) 对 Nand flash 烧写 上面执行成功后,将 SD 卡从主机拔出,插入开发板 SD0 口(开发板默认从 SD0 口 启动) RBL 是固化在 DM365 中 ROM 区的一小段加载程序,上电后复位 ARM 读取[Boot Mode]的设置,然后从相应的硬件媒体中加载并执行 arm ubl,如果没有找到相应的 UBL 则会在下一个媒体设备中继续寻找。 在开发板核心板的右上角,U7 为 BOOT MODE 选择开关,选择启动模式: 将 1、2、3 拨至 0,后面的 4、5、6 开关对应了 BTSEL[2:0]: BTSEL[2:0]= 000 :NAND 启动模式 BTSEL[2:0]= 001 :AEMIF 启动模式(Nor 或者 OneNand) BTSEL[2:0]= 010 :MMC0/SD0 启动模式 BTSEL[2:0]= 011 :UART0 启动模式 BTSEL[2:0]= 100 :USB 启动模式 BTSEL[2:0]= 101 :SPI 0 启动模式 BTSEL[2:0]= 110 :EMAC 启动模式 BTSEL[2:0]= 111 :HPI 启动模式 先将 4、5、6 拨至 010 ,选择 SD 卡 boot 模式 打开 Windows 主机超级终端 “泰瑞 DM365” , 连接串口线 (串口线接开发板 URAT0) 、 5V 电源线 超级终端会出现类似如下打印信息:
实验三 指令与寻址方式认知实验(Keil)
实验三指令与寻址方式认知实验一、实验目的1.了解单片机基本指令及其寻址方式;2.掌握在µVision环境中查看指令操作结果的技巧。
二、实验仪器和设备Keil软件;THKSCM-2综合实验装置;三、实验原理及实验内容1.示例及相关设置(1)建立一个文件夹:lx31。
(2)利用菜单File的New选项进入编辑界面,输入下面的源文件,以lx31.asm文件名存盘到lx31文件夹中。
ORG 0000HMAIN:MOV R7,#16MOV A,#00HMOV R0,#30HLP:MOV @R0,AINC R0INC ADJNZ R7,LPSJMP $END(3)在lx31文件夹下建立新工程,以文件名lx31存盘(工程的扩展名系统会自动添加)。
(4)在Project菜单的下拉选项中,单击Options for Target ‘Target1’,在弹出的窗口中要完成一下设置:○1单片机芯片选择AT89C51选择完器件,按“确定”后会弹出一个提示信息框,提示“Copy Startup Code to Project Folder and Add File to Project?”,选择“是”。
○2晶振频率设为11.0592MHz。
○3Output标签下的Create HEX File前小框中要打钩。
○4在Debug标签选择Use Simulator(软件模拟)。
(5)在Project菜单的下拉选项中,单击build Target 选项完成汇编,生成目标文件(.HEX)。
利用单步、执行到光标处两种方法运行程序,观察程序运行的结果。
(6)分析程序的功能,研究观察以下指令的寻址方式及其操作效果。
2.示例及相关设置(1)建立一个文件夹:lx32。
(2)利用菜单File的New选项进入编辑界面,输入下面的源文件,以lx32.asm文件名存盘到lx32文件夹中。
ORG 0000HMOV R0,#20HMOV R1,#22HMOV A,@R0ADD A,@R1MOV 24H,AINC R0INC R1MOV A,@R0ADDC A,@R1MOV 25H,ASJMP $END(3)在lx32文件夹下建立新工程,以文件名lx32存盘(工程的扩展名系统会自动添加)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SEED-DVS365 Demos编译:
• 当用户修改后,需要重新编译这些演示程序,用户 不用配置编译路径,编译器等参数,SEED-SDK已 经配置完毕,用户只需要执行如下命令进行编译:
SEED-DVS365 Demos编译:
• 完全编译: • Host#cd /opt/dvsdk_2_10_00_17/dvsdk_demos_2_10_00_ 17/dm365 • Host # make • 以上操作对demos下的所有源码进行了编译, 用户可以运行make install进行安装,将编译生成 的可执行文件、cmem.ko和loadmodules.sh等相关 文件安装至NFS目录下即/opt/nfs/opt/dvsdemos目 录下。
SEED-DVS365 Linux 内核配置 :
• 运行menuconfig后出现如下界面: •
SEED-DVS365 Linux 内核配置 :
• 如果服务器Linux环境安装有Qt,也可以运行 xconfig进行配置(因用户习惯而异,与menuconfig 无本质区别): • Host# make ARCH=arm CROSS_COMPILE=arm_v5t_le- xconfig
SEED-DVS365_SDK开发套件安装:
• SEED-SDK安装完成后,在/opt下创建如下目录: • dvsdk_2_10_00_17 该目录下为 DVEVM与DVSDK套件,包括各种demo源码等 • • mv_pro_5.0 该目录下为ARM 端的armv5t交叉编译,linux内核以及目标文件系统 nfs NFS文件系统 该目录为配置完毕的
SEED-DVS365 Demos编译:
• SEED-DVS365 平台支持Decode、Encode、 Encode+Decode演示,展示DVS365平台的在媒体 处理方面的性能。由于DVS365平台上文件系统在 NAND Flash上,而NAND Flash只有128MB空间, 因此解码的音视频数据没有在Flash中,而Encode Demo时存储的文件也不宜太大。不过DVS365平 台可以通过NFS文件系统实现上述所有的演示功能, 演示方式完全相同
SEED-DVS365_SDK开发套件配置:
• 配置NFS文件系统服务: • 1.修改/etc/exports文件,添加如下内容 • /opt/nfs *(rw,sync,no_root_squash,no_all_squash) • 保存退出 • 2.运行以下命令启动nfs服务: • Host# /usr/sbin/exportfs -a • Host# /etc/init.d/nfs-kernel-server restart •
SEED-DVS365_SDK开发套件配置:
• 配置ARM v5t交叉编译器PATH : • 3.保存退出, Host # source .bashrc • 4.可以通过如下方式测试arm_v5t编译器是否可 以使用: • Host #echo $PATH • 显示信息中包含如下,表示安装正常 opt/mv_pro_5.0/montavista/pro/devkit/arm/v5t_le/ bin:/opt/mv_pro_5.0/montavista/pro/bin:/opt/mv_pr o_5.0/montavista/common/bin •
SEED-DVS365_SDK开发套件安装:
• SEED-SDK安装到Linux服务器的安装步骤如下: • 复制 • 将DaVinci Linux Develop Software目录下的 DaVinci开发套件SEED_DVS365-SDK.tar.gz复制 到Linux服务器的/opt目录下 • 安装 • 在Linux服务器下进入到/opt目录下,进行解压 安装操作,使用命令: • Host #tar -zxvf SEED_DVS365-SDK.tar.gz
SEED-DVS365 Linux 内核编译:
• SEED-DVS365内核配置保存后,运行下面指令进 行内核编译: • Host# cd /opt/montavista/pro/devkit/lsp/tidavinci/linux-2.6.18_pro500 • Host# make ARCH=arm CROSS_COMPILE=arm_v5t_le- uImage • 编译过程可能需要较长时间,编译完成生成 uImage文件
SEED-DVS365 Demos编译:
• SEED-SDK安装包已经安装了demos程序源码,用 户可以在此基础上修改实现自己的演示程序,这部 分程序完全是基于ARM端的应用程序,程序中通过 Codec Engine提供的机制调用DSP端的音视频编 解码算法,实现解码、编码和编解码功能。
SEED-DVS365 Demos编译:
SEED-DVS365 Linux 内核配置 :
• 运行xconfig后出现如下界面: •
SEED-DVS365 Linux 内核配置 :
• 建议普通用户(对Linux配置和SEED-DVS365不熟 悉者)仅只执行以下命令进行配置: • Host# cd /opt/montavista/pro/devkit/lsp/tidavinci/linux-2.6.18_pro500 • Hos# make ARCH=arm CROSS_COMPILE=arm_v5t_le- menuconfig • 同样进入到配置界面进行配置,用户通过键盘 上下左右键进行选择配置,添加删减不要的内核模 块,配置完成退出并保存配置即可。关于Linux内 核的配置可以参考标准PC机下Linux内核配置。
SEED-DVS365 CCS开发环境的搭建
主讲人:杨川
议程:
• SEED-DVS365_SDK开发套件安装、配置 • SEED-DVS365 Demos编译及演示
SEED-DVS365_SDK开发套件安装、 配置
SEED-DVS365_SDK开发套件安装:
• SEED-DVS365平台随机的开发软件套件为SEEDDVS365_SDK,该套件基于TI的系列套件进行整合, 将TI的繁琐的安装、配置、各个目录下程序编译器 路径复杂的配置等进行简化,很大程度上减少用户 的繁琐操作,降低开发者的开发难度。 • SEED-DVS365平台的开发软件套件包括以下软件 组件: • SEED_DVS365-SDK.tar.gz
SEED-DVS365 Demos编译:
• e调用及UI 显示等操作源码 • encodedecode: encode+decode演示程序源 码,视频输入输出设备初始化,视频编解码算法调 用及UI显示等操作源码 • Interface: Interface包含了demo 程序需要的库和头文件,用于 UI显示操作,数据 拷贝,遥控器控制等操作
SEED-DVS365 Demos的演示:
• SEED-DVS365系统启动: • 1.配置PC机端的超级终端,设置串口参数:波 特率115200,数据位8,奇偶校验无,停止位1, 数据流控制无 • 2.打开Windows PC机串口控制台,连接串口 • 3.SEED-DVS365平台采用12V电源上电,此时 Windows PC机串口控制台显示启动信息,直至系 统启动完毕,显示登陆信息提示符xxx.xxx.xxx.xxx login •
SEED-DVS365 Demos的演示:
• SEED-DVS365系统启动: • 4.登陆系统,在提示符下登陆xxx.xxx.xxx.xxx login : root ↙,进入系统,控制台显示提示符 Target # • Note:↙表示回车,Target#代表DVS365平台 Linux控制台提示符 • 5.进入demo所在目录,控制台提示符下执行如下 命令:Target # cd /opt/dm365 ↙
SEED-DVS365 Linux 内核配置 :
• SEED-DVS365 Linux配置编译步骤如下: • 1.Host # cd /opt/mv_pro_5.0/montavista/pro/devkit/lsp/tidavinci/linux-2.6.18_pro500 • Host# make mrproper • 此命令将删除所有默认配置 • 2. Host# make ARCH=arm CROSS_COMPILE=arm_v5t_leseeddvs365_defconfig(注意空格le- seed) • Host# make ARCH=arm CROSS_COMPILE=arm_v5t_le- menuconfig
SEED-DVS365 Demos的演示:
• 下面详细介绍一下SEED-DVS365的硬件配置: • 1.将SW1所有位置调‘0’ • 2.使用串口线将SEED-DVS365与PC机相连, 一端接:SEED-DVS365的J3位置,另一端接:PC 机的RS232口 • 3.用网线将SEED-DVS365与PC连接到同一网 络中,SEED-DVS365的网络接口位置是T1 • 4.SEED-DVS365平台的S3连接12V电源
SEED-DVS365_SDK开发套件配置:
• 配置ARM v5t交叉编译器PATH : • 1.以root操作,进入到主文件夹下,执行命令 • Host # cd ~ • 2.修改目录下.bashrc文件,打开.bashrc文件, 在最下面一行,添加如下内容: • PATH="/opt/mv_pro_5.0/montavista/pro/devkit /arm/v5t_le/bin: • /opt/mv_pro_5.0/montavista/pro/bin: • /opt/mv_pro_5.0/montavista/common/bin:$PA TH"
SEED-DVS365 Linux 内核编译:
• 如果用户想编译模块,可以运行如下命令进行编译 内核模块: • Host# make ARCH=arm CROSS_COMPILE=arm_v5t_le- modules • • 编译完成生成用户需要的内核动态加载的模块