vxWorks7调试总结

vxworks7.0调试总结

一直以来想看看新的vxworks7.0有什么变化,最近抽了一段时间做了一个基于zedboard的vxworks的操作系统镜像,刚开始就被很多新的问题困扰了很久,首先是uboot,vxworks7不再有bootloader,编程了全新的uboot支持,有的CPU增加了一个VXBL作为系统启动引导,但是官网推荐用U-BOOT引导启动,如何编译一个uboot,可以参考BSP包里面的target.ref,也可以从官网下载U-BOOT源码,修改支持自己的处理器,然后重新编译,下面是关于zedboard的u-boot编译:

1、需要一台装有Linux系统或Windows系统装有Linux虚拟机的电脑,系统为Ubuntu;
2、进入Ubuntu系统,按Ctrl+Alt+T调出Terminal终端。输入sudo passwd root,会要求输入用户密码,然后重置root的密码,这里密码都不会显示。重置完后输入su root,再输入刚刚重置的root密码即可进入root
在这里插入图片描述
这里要说明很关键的一点,一定要把目录设置好。
3、在root目录下,输入mkdir /zed,在zed下创建tool,将下载的xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin拷贝到tool目录下。http://pan.baidu.com/s/1nvMWAHN
输入cd /root/zed/tool
然后./xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin
此时系统会提示权限不够,需要如下方式输入
chmod 777 xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin
之后再输入./xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin 弹出安装界面,每次都点击next即可。但是需要记住下图中安装的路径。
在这里插入图片描述
在这里插入图片描述
4、安装完成后需要设置环境变量
很多教程里面提到要下载ia32-libs的库,输入apt-get install ia32-libs。但我在实践中发现,输入这个会出现找不到库的情况,不安装也是可以进行编译的。
设置环境变量的方法是:输入export CROSS_COMPILE=arm-xilinx-linux-gnueabi-
export PATH=/root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin:$PATH
这里,真的是不同的教程有不同的方法,需要注意的是大家一定在指定PATH的时候按照自己的安装路径设置,这两行命令亲测没有问题,可以放心使用。
有的地方是arm-xilinx-linux-gnuadbi的写法,这个应该是有人的笔误最后流传到网上,需要大家注意鉴别。
在此要感谢想要奔跑的蜗牛提供的方法,可以在宿主目录下编辑 .bashrc文件,将设置环境变量的命令保存在.bashrc中,因为每次打开终端的时候,系统会自动运行.bashrc文件,所以保存设置过后,关闭终端再重新打开,以后就不用每次都设置环境了。
完成后输入arm-xilinx-linux-gnueabi-gcc -v 会显示相关信息
5、拷贝官网下载的源代码到linux操作系统下/home/
6、进入到源文件根部目录下:cd /home/
7、 make distclean
8、make zynq_zed_config 或者make zynq_zc702_config(取决于你的板卡)
9、make
10、这时在根目录下会生成你的u-boot、u-boot.bin
11、拷贝u-boot到你的xilinx-sdk下面:E:zynq_worksspace\xrTerminal_zynq\xrTerminal_zynq.sdk\EmbeddedPlatForm_FSBL\Debug
12、现在可以开始编译你自己的BOOT.bin,如何编译在这里就不多说,如果你能熟练使用xilinx-sdk的话,这个很简单。
然后可以通过uboot引导你的vxworks系统镜像,在系统镜像启动阶段,串口总是没有输出,搞得我很是头大,折腾了快一个礼拜,网上查各种资料,可惜的是网上关于vxworks7的资料太少,无奈只有自己琢磨吧,可以通过点灯的方法去调试,看看程序运行到哪里出了问题,不过vxworks7文档介绍增加了kprintf在usrinit阶段的打印功能,如果你敢兴趣可以自己研究,具体代码可以用汇编语言实现:

__asm(“LDR r12,=0xe000a204”);
__asm(“LDR r11,=0x00000080”);
__asm(“STR R11,[R12]”);

__asm(“LDR R12,=0xe000a208”);
__asm(“LDR R11,=0x00000080”);
__asm(“STR R11,[R12]”);

__asm(“LDR R12,=0xe000a040”);
__asm(“LDR R11,=0x00000080”);
__asm(“STR R11,[R12]”);


GPIO根据你自己的板卡选择,这里的寄存器地址查找数据手册确定,不再多少,发现程序运行到mmuEarlyInit时卡死,于是拼命的研究内存管理,查看DDR基地址配置,内存大小配置等,发现都没有问题,可就是启动后串口不显示,郁闷中。。。。。。。一个礼拜在这里折腾,始终没有解决问题,最后发现串口有输出一个乱码,感觉系统应该是正常运行了,只不过串口不能交互,现在开始研究串口,底层串口使用驱动vxbFdtZynqSio.C这个文件,检查发现系统启动配置串口波特率为115200,没有问题,串口时钟50000000,这就有问题了,我的串口配置时钟为100000000HZ,于是更改串口时钟配置,在设备树文件中增加

uart1: uart@e0001000
{
compatible = “xlnx,xuartps”;
reg = <0xE0001000 0x1000>;
clock-frequency = <100000000>;
interrupts = <82>;
interrupt-parent = <&intc>;
};


好了,系统正常启动,开心,不过为什么串口配置错误,导致mmuEarlyInit时卡死,不解中,后面继续研究,下次研究清楚了,再做详细介绍。

已标记关键词 清除标记
相关推荐
1 TORNADO的调试工具 4 1.1 WINDSHELL 4 1.1.1 简介 4 1.1.2 功能键 5 1.1.3 特殊控制符 6 1.1.4 计算功能 6 1.1.5 环境变量 6 1.1.6 内置指令 6 1.2 BROWSE 17 1.2.1 内存查看 17 1.2.2 模块信息 17 1.2.3 堆栈使用率 18 1.2.4 CPU占有率 18 1.2.5 任务信息 19 1.2.6 中断向量表 19 1.2.7 实体查看 20 1.3 DEBUGGER 21 1.3.1 条件断点 21 1.3.2 代码显示 21 1.4 TARGET SERVER 21 1.4.1 使用串口调试 21 1.4.2 重定向 21 1.5 WINDVIEW 22 1.5.1 记录层次 22 1.5.2 记录数据存储方式 22 1.5.3 传送方式 22 1.5.4 数据分析 23 1.6 TRIGGER 23 1.7 TELNET 24 1.8 调试模式 24 1.8.1 任务调试模式下的多任务调试 26 1.8.2 系统调试模式下多任务的调试: 27 1.8.3 中断服务程序的调试 28 2 V2支撑的调试手段 28 2.1 各模块提供的函数 28 2.2 如何查看ERROR.LOG文件 29 2.2.1 定位到具体的出错行 31 3 V3支撑的调试手段 31 1.1. 进程调试 31 1.2. 查看所有进程信息:OSS_DBGGETALLUSEPCBINFO 31 1.3. 查看当前运行的进程信息 31 1.3.1. 进程断点设置:b 31 1.3.2. 当前进程运行信息:OSS_DbgGetCurPCBInfo 32 1.3.3. 当前进程的消息信息:OSS_DbgGetCurMsgInfo 32 1.3.4. 进程断点取消:bd 32 1.3.5. 恢复进程运行:tr 32 1.4. 内存观察 32 1.4.1. 消息队列堆积、阻塞观察:tw 32 1.4.2. 任务消息队列观察:OSS_DbgShowQueueCtl 33 1.4.3. 任务UB使用观察:OSS_DbgShowTaskUB 33 1.4.4. 进程使用UB情况:OSS_DbgShowProcUBInfo 34 1.4.5. UB的配置和当前状态:OSS_DbgMemUbUsePrn/ OSS_DbgShowUbPool 34 1.5. 通信和定时器状态观察 35 1.5.1. 通信状态显示OSS_DbgShowComm 35 1.5.2. 测试板间通信是否正常:OSS_DbgRudpPing 35 1.5.3. 单板上定时器的使用信息:OSS_DbgGetTimerInfo 36 1.5.4. 单板进程使用定时器的信息:OSS_DbgGetTimerInfoOfProc 36 1.6. 杂项观察 36 1.6.1. 异常发生后信息观察:OSS_DbgShowExcInfo 36 1.6.2. 堆栈使用率/运行时间统计:zte 36 1.6.3. 进程最近打印内容观察:ztecall/ ztemsg 36 1.6.4. 进程最近打印的1K内容和打印时间:zteprint 37
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页