Trace32-ICD是目前功能最强大的仿真器,支持各种CPU,包括ARM/X86等。Trace32是德国lauterbach公司的产品,功能强大,支持各种操作系统调试,如linux/vxworks/wince等,不过价格也比较高,要3-5万RMB,现在也有些仿制的Trace(如Trace32-ICP),价格比较便宜,大概1万多RMB。Trace32由于其功能强大,特别适合大型嵌入式软件开发(包括操作系统的)。
Trace32仿真器包括硬件仿真器Trace32-ICD和调试软件Trace32, 调试软件Trace32可以支持多种操作系统,包括WINDOWS/LINUX/SOLARIS/HP-UX等。以前其在windows下用过Trace32,安装和使用相对简单; 最近因要在Linux(Ubuntu)下开发,需要在ubuntu下使用Trace32, 这里把Linux下的Trace32安装要点写来,供参考:
1.首先要仔细看安装盘下的readme.txt文件,里面写了在pc_linux下的安装步骤,如下:
INSTALLATION ON PC_LINUX
Copy the /files directory structure from the CD to your disk.
The utility "filecvt" should be used to convert the files to unix format.
The host specific files can be found in the /bin/pc_linux directory.
......
在Linux环境下输入: cd /usr/openv/netbackup/bin/admincmd/
./bpexpdate -m 磁带标签名(media ID) -d 0 表示对这盘磁带的数据清空,如磁带介质保存周期是永久的,
也会全部清空,使它过期,成为一盘空磁带 ......
linux中的大部分驱动程序,是以模块的形式编写的.这些驱动程序源码可以修改到内核中,也可以把他们编译成模块形势,在需要的时候动态加载.
一个典型的驱动程序,大体上可以分为这么几个部分:
1、注册设备
在系统初启,或者模块加载时候,必须将设备登记到相应的设备数组,并返回设备的主驱动号,例如:对快设备来说调用refister_blkdec()将设备添加到数组blkdev中.并且获得该设备号.并利用这些设备号对此数组进行索引.对于字符驱动设备来说,要使用module_register_chrdev()来获得祝设备的驱动号.然后对这个设备的所有调用都用这个设备号来实现
2、定义功能函数
对于每一个驱动函数来说.都有一些和此设备密切相关的功能函数.那最常用的块设备或者字符设备来说.都存在着诸如 open() read() write() ioctrol()这一类的操作.当系统社用这些调用时.将自动的使用驱动函数中特定的模块.来实现具体的操作.而对于特定的设备.上面的系统调用对应的函数是一定的.
如:在块驱动设备中.当系统试图读取这个设备(即调用read()时),就会运行驱动程序中的block_read() 这个函数. 打开新设备时会调用这个设备驱动程序的device_open() 这个函数.
3、卸载模块
在不用这个设备时,可以将他卸载.主要是从 ......
#1
关于嵌入式系统的启动
(SHARE FOR ALL)
嵌入式
Linux
启动分为两个部分,系统引导与
Linux
启动。系统引导将完成
Linux
装入内存前,初始化
CPU
和相关
IO
设备,并将
Linux
调入内存的工作。系统引导主要由
BootLoader
实现。在
BootLoader
将
Linux
内核调入内存之后,将权力交给
LinuxKernel
,进入
Linux
的启动部分。以下详细分析启动的过程与使用的文件。
一、系统引导与
BootLoader
BootLoader
因嵌入式系统的不同与
PC
机有很大不同,这里将以
Hyper250(Inter Xscale GDPXA250)
的启动为例来分析。由于没有
BIOS
驱动主板,
EnbeddedOS
必须由
bootloader
驱动所有的硬件,并完成硬件的初始化工作。
所有的初始化文件在
hyper250/Bootloader
目录下。
首先分析开机运行的分件:
hyper250/Bootloader/X-Hyper250R1.1-Boot/src/start_xscale.S
文件包含两个库文件:
& ......
linux strace 进程跟踪
调用:
strace [ -dffhiqrtttTvxx ] [ -acolumn ] [ -eexpr ] ...
[ -ofile ] [ -ppid ] ... [ -sstrsize ] [ -uusername ] [ command [ arg ... ] ]
strace -c [ -eexpr ] ... [ -Ooverhead ] [ -Ssortby ] [ command [ arg ... ] ]
功能:
跟踪程式执行时的系统调用和所接收的信号.通常的用法是strace执行一直到commande结束.
并且将所调用的系统调用的名称、参数和返回值输出到标准输出或者输出到-o指定的文件.
strace是一个功能强大的调试,分析诊断工具.你将发现他是一个极好的帮手在你要调试一个无法看到源码或者源码无法在编译的程序.
你将轻松的学习到一个软件是如何通过系统调用来实现他的功能的.而且作为一个程序设计师,你可以了解到在用户态和内核态是如何通过系统调用和信号来实现程序的功能的.
strace的每一行输出包括系统调用名称,然后是参数和返回值.这个例子:
strace cat /dev/null
他的输出会有:
open("/dev/null",O_RDONLY) = 3
有错误产生时,一般会返回-1.所以会有错误标志和描述:
open("/foor/bar",)_RDONLY) = -1 ENOENT (no ......
more :
作用:该指令,可以将文件的内容,从前向后,每次一屏,打印到终端屏幕上。
用法:
more filename
显示一屏信息后,' 空格' 向下翻一屏,' 回车' 向下翻一行,' q ' 退出
cat :
作用:该指令本来的作用,是将多个文件的内容合并起来,打印到标准输出,
但最常见的用法是显示一个文件的内容,但文件比较大的情况, 屏幕会很快滚动,无法查看有效信息,建议使用 more 。
用法:
cat filename
grep :
作用:打印文件或者标准输入中符合特定模式的行,该指令是从日志文件中检索特定信息的最有效手段。
1、 基本用法
grep pattern filename
如:
&nb ......