关于LINUX。谢谢了
1 用虚拟机装LINUX要什么硬件配置跑起来不会慢(集成显卡的主板,1G以上的内存可以不可以?)<br />2 电脑主板没串口,用什么方法弄个串口最接近主板本身带的串口?(以前有个类似的帖子,还没找到) 转的串口在有虚拟机时要不要装LINXU的驱动?虚拟机下如何使用转的串口?<br />我用的虚拟机是VMWAREre
1)建议内存1G及以上,那样会好许多,对显卡没要求<br />2)可以配置使用主机串口。22
同上
也在想这个问题。俺还是比较落后的,没用过虚拟机串口,
也想知道效果。这里有虚拟机串口,
我用它做ecos在PC上的开发,Linux也能用,免驱动。《ecos增值包》里全包括了,不用到处找了。<br /><br />********************************<br />* 手把手教你使用GDB调试ARM开发板 *<br />********************************<br /> 2008/12/21 asdjf@163.com www.armecos.com<br /><br /> 很多《ecos增值包》用户对于使用GDB调试EasyARM2200/SmartARM2200之类的ARM开发板非常感兴趣,但总是遇到各种障碍,可能原来的文档说明过于简单,现在把详细操作步骤总结如下,手把手地教会你GDB调试。<br /> <br /> 《ecos增值包》里提供了现成的稳定环境,所有gcc、gdb、insight等程序都是已经被证明可以正常工作的,一切由于编译,开发工具版本不匹配,安装不完全等等原因引起的低级错误均不存在,在这个前提下,我们详细讨论GDB调试步骤。<br /> <br /> 具体内容如下:<br /> <br /> GDB调试原理<br /> 串口GDB配置<br /> 网络GDB配置<br /> 一个简单的命令行调试范例<br /> 串口insight配置<br /> 网络insight配置<br /> 一个简单的图形化调试范例<br /> 在虚拟机上使用GDB调试(VmWare + cygwin + gdb/insight)<br /> GDB命令使用说明<br /> <br /> 我们先讲GDB调试原理,再讲最简单的命令行和图形化调试,包括配置和调试范例。考虑到ARM开发板资源有限,我们特意提供了PC机上虚拟调试的解决方案(仅限企业定制版用户),你可以先在PC机上虚拟调试,等调试差不多时再迁移到开发板上,好处是PC机调试速度特别快,资源丰富,无须添加其他设备,一台PC机足矣。最后,给出一个GDB常用命令总结, 不求全面,但求实用,更详细的使用方法可以通过GDB自带的help命令或者上网搜索得到。<br /> <br /> --------------<br /> | GDB调试原理 |<br /> --------------<br /> 略<br /> <br /> --------------<br /> | 串口GDB配置 |<br /> --------------<br /> <br />在cygwin命令行输入arm-elf-gdb a.out<br />(gdb) set remotebaud 115200<br />(gdb) target remote COM1<br />Remote debugging using COM1<br />0x80007704 in ?? ()<br />(gdb) load<br />(gdb) list<br />(gdb) c<br />可以通过串口0调试a.out程序,注意:因为串口0已经用于GDB调试目的,所以被调试程序不能使用串口0,否则会发生冲突。<br /><br /> --------------<br /> | 网络GDB配置 |<br /> --------------<br /> <br />在cygwin命令行输入arm-elf-gdb a.out<br />(gdb) target remote 192.168.0.6:9000<br />Remote debugging using 192.168.0.6:9000<br />0x80007704 in ?? ()<br />(gdb) load<br />Loading section .rom_vectors, size 0x40 lma 0x81010000<br />Loading section .text, size 0x14774 lma 0x81010040<br />Loading section .rodata, size 0x3c0 lma 0x810247b4<br />Loading section .data, size 0x6a4 lma 0x81024b74<br />Start address 0x81010040, load size 86552<br />Transfer rate: 62946 bits/sec, 298 bytes/write.<br />(gdb) list<br />(gdb) c<br />通过网口GDB调试a.out允许被调试程序使用串口0,因为不会冲突嘛!当你同时打开超级终端,就可以看到串口的输出信息。<br /><br /> -------------------------<br /> | 一个简单的命令行调试范例 |<br /> -------------------------<br /> <br /> 比如调试如下程序片段,taska是demo1.c文件里的一个函数,a.out是编译后的文件。<br />......<br /><br />void taska(cyg_addrword_t data)<br />{<br /> int message = (int) data;<br /> int i = 0;<br /> int j = 0;<br /> <br /> for(;;)<br /> {<br /> printf(" AAAAAA111111 is active.thread data is %d.",message);<br /> i = i + 1;<br /> j = j + 10;<br /> cyg_thread_delay(300);<br /> }<br />}<br /><br />......<br /> <br /> 在cygwin命令行输入:<br />$ arm-elf-gdb a.out<br /> <br /> 设置GDB参数并加载被调试程序<br />(gdb) target remote 192.168.0.6:9000<br />(gdb) load<br /> <br /> 在taska函数处设置断点<br />(gdb) break demo1.c:taska<br /> <br /> 继续运行,遇到断点重新回到GDB命令行界面<br />(gdb) c<br />Continuing.<br /><br />Breakpoint 1, taska (data=1) at demo1.c:11<br />11 int message = (int) data;<br />Current language: auto; currently c<br /> <br /> 使用list命令列出断点附近的源程序<br />(gdb) list<br /> <br />6 static cyg_thread thread_data;<br />7 static cyg_handle_t thread_handle;<br />8<br />9 void taska(cyg_addrword_t data)<br />10 {<br />11 int message = (int) data;<br />12 int i = 0;<br />13 int j = 0;<br />14<br />15 for(;;)<br /><br /> 按回车继续上一个命令,即:再执行一次list命令,接着列出后面的源程序<br />(gdb)<br />16 {<br />17 printf(" AAAAAA111111 is active.thread data is %d.
",message);<br /><br />18 i = i + 1;<br />19 j = j + 10;<br />20 cyg_thread_delay(300);<br />21 }<br />22 }<br />23<br />24 void taskb(cyg_addrword_t data)<br />25 {<br /><br /> 使用n命令,单步调试,不进入函数内部<br />(gdb) n<br />12 int i = 0;<br />(gdb) n<br />13 int j = 0;<br />(gdb) n<br />17 printf(" AAAAAA111111 is active.thread data is %d.
",message);<br />(gdb) n<br />18 i = i + 1;<br />(gdb) n<br />19 j = j + 10;<br />(gdb) n<br />20 cyg_thread_delay(300);<br />(gdb) n<br />15 for(;;)<br />(gdb) n<br />17 printf(" AAAAAA111111 is active.thread data is %d.
",message);<br /><br /> 还可以使用display命令显示局部变量值,以后每次执行单步调试都会显示这个变量的值<br />(gdb) display i<br />1: i = 2<br />(gdb) n<br />18 i = i + 1;<br />1: i = 2<br />(gdb) n<br />19 j = j + 10;<br />1: i = 3<br /><br /> 如果出错,可以使用where命令了解出错位置附近的程序情况。<br /> <br /> ------------------<br /> | 串口insight配置 |<br /> ------------------<br /> <br /> 使用arm-elf-insight a.out进入图形调试界面。<br /> <br /> 在File -> targe settings...里设置<br /> Connection<br /> Target: Remote/Serial<br /> Baud Rate: 115200<br /> Port: com1<br /> <br /> ------------------<br /> | 网络insight配置 |<br /> ------------------<br /> <br /> 使用arm-elf-insight a.out进入图形调试界面。<br /> <br /> 在File -> targe settings...里设置<br /> Connection<br /> Target: Remote/TCP<br /> Hostname: 172.168.0.6<br /> Port: 9000<br /> <br /> --------------------------<br /> | 一个简单的图形化调试范例 |<br /> --------------------------<br /> 还是使用上面的程序例子,只不过换成图形化调试界面。<br /> 如下图所示,图形化调试无须**烦琐的命令,方便设置/查看各种信息,大大方便了用户的使用。<br /> <br /> ------------------------------------------------------<br /> | 在虚拟机上使用GDB调试(VmWare + cygwin + gdb/insight) |<br /> ------------------------------------------------------<br /> 使用虚拟机的好处是:无须额外添加硬件,仅在一台PC机上就可以搭建出ecos系统的GDB调试环境,速度快、成本低。支持键盘、屏幕,网卡,串口等设备。<br /> <br /> 虚拟串口设置,使用VSPD软件虚拟一对直联串口COM3和COM4,COM3接VmWare虚拟机串口2,COM4接超级终端。<br /> <img src="http://www.armecos.com/pic21ic/gdb/gdbpic1.gif"><br /> <br /> 设置启动盘,在VmWare的Floppy设备中指定使用redboot.flp软盘映像启动。这个redboot版本支持虚拟机的键盘、屏幕,网卡,串口,可以用i386-elf-gdb调试程序,无须硬件开发板。<br /> <img src="http://www.armecos.com/pic21ic/gdb/gdbpic2.gif"><br /> <br /> VmWare串口设置,VmWare缺省不支持串口,需要自行添加。建议添加两个串口设备,其中将串口2指向我们前面用VSPD软件虚拟出来的COM3。<br /> <img src="http://www.armecos.com/pic21ic/gdb/gdbpic3.gif"><br /> <br /> 启动redboot。<br /> <img src="http://www.armecos.com/pic21ic/gdb/gdbpic4.gif"><br /> <br /> 进入demo1.c图形调试界面,高亮条停止在断点处,鼠标停靠在变量上会自动显示出其值(如message=1),很方便。<br /> <img src="http://www.armecos.com/pic21ic/gdb/gdbpic5.gif"><br /> <br /> C与汇编混合显示模式MIXED,可以单步调试汇编码。可以用于学习C编译器是怎么把C语句编成汇编码的。<br /> <img src="http://www.armecos.com/pic21ic/gdb/gdbpic6.gif"><br /> <br /> 除了用鼠标即时取变量值外,也可以通过局部变量窗口读/修改变量值。可以很清晰地显示复杂的类变量。<br /> <img src="http://www.armecos.com/pic21ic/gdb/gdbpic7.gif"><br /> <br /> 将超级终端设置在虚拟串口COM4上,这样,VmWare从虚拟串口COM3上发送的信息就可以输出到超级终端上,不用额外添加硬件设备,一台PC全搞定。单步运行程序就可以在超级终端看到效果,直接修改寄存器、内存、变量等,可以看到程序执行发生相应变化。<br /> <img src="http://www.armecos.com/pic21ic/gdb/gdbpic8.gif"><br /> <br /> ------------------<br /> | GDB命令使用说明 |<br /> ------------------<br /> 略,可以上网搜索详细说明。<br /> <br /> 好啦,现在你就可以用最低成本调试RAM里的应用程序了(即使你只有一台PC机)。GDB(Insight)能够让你深入程序细节,随心所欲地调试程序。本解决方案特别适合低成本开发ecos程序。ecos与硬件无关,你基于ecos开发的应用程序可以不加改变地平滑移植到新的CPU处理器平台上,保值增值您的软件投资。
dddddddddddddddddddddddd
页:
[1]