MiniBoardFAQ

=常见问题解答FAQ=

欢迎您使用“编辑”功能在网页上提问或解答问题,我们也会尽一切努力提供解答和帮助,您的提问会帮助我们完善技术支持,也会方便其他用户的使用,在此表示感谢!!(请您在问题前面加上一个英文分号,那样更醒目)

嵌入式Linux系统的开发环境(Ubuntu虚拟机的使用)

 * -你们(RealtimeDSP)提供的嵌入式Linux系统开发环境是怎样的?:由于TI的达芬奇系列和OMAP系列芯片采用ARM,DSP或ARM+DSP结构形式,所以在开发具有ARM核的相关芯片嵌入式系统时需要一个好用的并且功能强劲的Linux开发环境.一般地,用户可采用的开发环境可以是a)Linux主机 b)Windows+Cygwin c)Windows+VM 这三种形式,第一种是比较专业的做法,要求开发者熟悉所使用的Linux系统的各种操作,使用Linux就象使用Windows一样熟练;第二种的使用习惯倾向于操作Windows;第三种是前两种的兼顾,适用于大多数开发者.这也就是RealtimeDSP在选择开发平台时所考虑的——它要能适用于绝大多数用户,兼顾Linux和Windows操作而且还能共享文件和工具.经过反复对比,我们最终决定选用方案c：Windows(XP/Vista)+VM(VirtualBox)+Ubuntu
 * -虚拟机(VM)有许多种,为何要选用VirtualBox?:首先它适用,各项所需要用到的功能我们均进行了测试,并认为比较好用;其次它免费,由于它是一款开源软件,下载和使用它均是免费的,这也是Linux系统的一贯精神;再次它强大,您可以试着访问一下它的网站,可以了解到VirtualBox在不断完善,更新中,这也说明它有一个强劲的支持团队做为后盾,富有生命力和活力,用户也越来越多;最后它轻便,轻量级的安装包和占用系统资源,安装简易,配置灵活,适用于各种硬件配置.我相信,VirtualBox将会越来越流行.
 * -可选用的Linux发行版有许多种,为何选用Ubuntu?:访问一下Ubuntu网站或在Google上查一下,您就会得知Ubuntu(读作“乌班图”)越来越火了,且不说它即将在嵌入式系统中有所做为,只是看一看许多笔记本电脑在销售时可选预装Ubuntu这种情况,就可以了解它足够稳定和流行了.在选择Ubuntu做为开发系统操作环境的时候,我们考虑了它的的特点：稳定,先进,功能强大完备,有强劲的支持团队,用户众多,免费,流行,最后是:适用. 由于上述特点,在互联网上有关Ubuntu使用和设置的信息非常丰富,也有众多的参考书籍可以查阅.让我们一起来Ubuntu一下吧!
 * -开发环境都提供什么功能?:我们通过提供一个虚拟机安装盘使用户能简易地安装和设置嵌入式Linux系统的开发环境.在虚拟机中运行的Ubuntu环境下,会预装嵌入式系统的编译环境(交叉编译器及相关工具),板卡软件开发包(SDK,包含Bootloader,Kernel和Demo程序的全部源码及说明文档),开发系统还提供ftp或tftp服务,NFS服务做为辅助开发手段,另外已配置好的系统还能与Windows进行便易的数据交互;在安装光盘上还有TI相关文档和数据手册,附加的测试和示例程序(源码),使用手册,系统板原理图等.另外通过技术支持,您还能得到更多的技术文档,测试程序等.
 * -如何制作fat32和ext3双分区SD卡?:我们从一块新的SD卡开始,将它插入到读卡器中并连接到开发主机的USB插座上
 * 【Linux主机或虚拟机】这里假设读卡器连接后的设备为sdb,首先umount掉sdb相关分区,然后继续操作
 * 请参考card setup article直至完成fdisk操作
 * 再到Windows中将此卡上fat32分区格式化一次(不知为何非要有此步骤,否则SD卡启动不正常,也许是Ubuntu的问题?)
 * 这样SD卡就准备好了,如果复制正确的系统文件即可在MiniBoard上启动

sudo mkdir /mnt/windows
 * -VirtualBox如何与windows进行文件目录共享:启动linux虚拟机,确认 /mnt/windows存在,如果不存在，建立目录
 * 执行如下指令实现文件目录共享

sudo mount -t vboxsf share /mnt/windows sudo mount -a
 * 此时,linux可以通过/mnt/windows目录与windows交换文件
 * 为了保证每次启动计算机都可以共享目录,执行如下操作,以后每次启动都可以直接使用文件交换功能了

su root echo "share /mnt/windows vboxsf rw 0 0" >> /etc/fstab

Mini板开发环境使用
davinci@davinci-desktop:~$ export ...     declare -x PATH="/opt/codesourcery/arm-none-linux-gnueabi/arm-2007q3/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" ...     davinci@davinci-desktop:~$
 * -如何正确设置编译路径:请检查PATH变量,如果PATH项与下面不同则继续进行,否则您的编译路径已经设置好了


 * 在ICETEK-OMAP3530-Mini系统所配的Ubuntu开发环境中进行以下操作：

davinci@davinci-desktop:~$PATH="/opt/codesourcery/arm-none-linux-gnueabi/arm-2007q3/bin/:$PATH"
 * 编辑/home/davinci/.bashrc文件

davinci@davinci-desktop:~$gedit .bashrc
 * 在文件末尾添加如下行并保存退出

export PATH="/opt/codesourcery/arm-none-linux-gnueabi/arm-2007q3/bin/:$PATH"
 * -如何恢复ICETEK-OMAP3530-Mini系统配置的DemoSD卡:需要使用ICETEK-OMAP3530-Mini系统配的开发环境
 * 准备一块SD卡,按照上面介绍的将SD制成双分区并格式化好,将它插入读卡器并连接到开发主机上
 * 在【uBuntu】中如下操作:

davinci@davinci-desktop:~$ cd ICETEKWork/Demos davinci@davinci-desktop:~/ICETEKWork/Demos$ sudo cp DemoSD/fat32/MLO /media/FAT32 davinci@davinci-desktop:~/ICETEKWork/Demos$ sync davinci@davinci-desktop:~/ICETEKWork/Demos$ sudo cp DemoSD/fat32/* /media/FAT32 davinci@davinci-desktop:~/ICETEKWork/Demos$ sudo cp -a DemoSD/ext3/* /media/EXT3 davinci@davinci-desktop:~/ICETEKWork/Demos$ sync
 * 等待所有数据均写入SD卡后即可使用


 * -如何制作从NandFlash启动的系统:如果已经做过启动卡,可将此卡插入读卡器后在Ubuntu中用文件浏览器删除卡上FAT32分区中除MLO文件外所有文件,删除EXT3分区中所有文件及子目录,跳过下面制作新卡的这一步继续
 * 制作SD系统启动卡(请参照[ICETEK-OMAP3530-Mini使用手册 第三章 一]进行操作)
 * 重新编译XLoader,生成新的x-load.bin.ift
 * 按照[ICETEK-OMAP3530-Mini使用手册 第二章 二]进行操作.在进行到其中的步骤4的最后时,请将定义CONFIG_MMC句注释
 * 复制启动盘软件
 * 在Ubuntu中插入读卡器,使系统识别FAT32分区和EXT3分区并在桌面上显示相应图标(如果分区名称有不同,请在下面操作中根据相应的映射位置调整命令内容中相关部分)
 * 启动Ubuntu中终端,进行如下操作

...$ sync ...$ cd ~/ICETEKWork/Demos/WorkSD ...$ sudo cp fat32/* /media/FAT32 ...$ sudo cp -a ext3/* /media/EXT3 ...$ sudo mkdir /media/EXT3/work/fs ...$ sudo cp -a ext3/* /media/EXT3/work/fs ...$ sync
 * 将上面新生成的x-load.bin.ift复制到SD卡的FAT32分区
 * 卸载SD卡
 * 启动ICETEK-OMAP3530-Mini系统
 * 在断电情况下,将SD卡插入Mini板J14,连接串口,在Windows中打开超级终端程序
 * 接通电源,观察超级终端中的显示,在UBoot计数时按空格键停止.(如果超级终端中显示Xloader从SD卡启动并停止在Loading u-boot.bin from nand,请将SD卡FAT32分区用Windows格式化成FAT后重新复制系统软件到此分区)
 * 烧写XLoader到NandFlash

OMAP3 Miniboard # mw.b 80000000 ff 80000 OMAP3 Miniboard # mmcinit OMAP3 Miniboard # fatload mmc 0:1 80000000 x-load.bin.ift reading x-load.bin.ift 11412 bytes read OMAP3 Miniboard # nand unlock device 0 whole chip nand_unlock: start: 00000000, length: 134217728! NAND flash successfully unlocked OMAP3 Miniboard # nand ecc hw OMAP3 Miniboard # nand erase 0 80000
 * 烧写UBoot到NandFlash

OMAP3 Miniboard # mw.b 80000000 ff 200000 OMAP3 Miniboard # mmcinit OMAP3 Miniboard # fatload mmc 0:1 80000000 u-boot.bin reading u-boot.bin 212880 bytes read OMAP3 Miniboard # nand ecc sw OMAP3 Miniboard # nand erase 80000 1e0000 NAND erase: device 0 offset 0x80000, size 0x1e0000 Erasing at 0x240000 -- 100% complete. OK     OMAP3 Miniboard # nand write 80000000 80000 1e0000 NAND write: device 0 offset 0x80000, size 0x1e0000 1966080 bytes written: OK     NAND erase: device 0 offset 0x0, size 0x80000 Erasing at 0x60000 -- 100% complete. OK     OMAP3 Miniboard # nand write 80000000 0 80000 NAND write: device 0 offset 0x0, size 0x80000 524288 bytes written: OK
 * 烧写Kernel到NandFlash

OMAP3 Miniboard # mw.b 80000000 ff 400000 OMAP3 Miniboard # fatload mmc 0:1 80000000 uImage reading uImage 1856668 bytes read OMAP3 Miniboard # nand ecc sw OMAP3 Miniboard # nand erase 280000 400000 NAND erase: device 0 offset 0x280000, size 0x400000 Erasing at 0x660000 -- 100% complete. OK     OMAP3 Miniboard # nand write 80000000 280000 400000 NAND write: device 0 offset 0x280000, size 0x400000 4194304 bytes written: OK     OMAP3 Miniboard # nand erase 680000 7980000 NAND erase: device 0 offset 0x680000, size 0x7980000 Skipping bad block at xxxxxxxx Erasing at 0x7fe0000 -- 100% complete. OK     OMAP3 Miniboard # setenv bootcmd 'nand read 80200000 280000 400000;bootm 80200000' OMAP3 Miniboard # setenv bootargs console=ttyS2,115200n8 console=ttyS0 noinitrd root=/dev/mmcblk0p2 rootfstype=ext3 rw rootdelay=3 nohz=off OMAP3 Miniboard # save OMAP3 Miniboard # boot
 * 烧写文件系统到NandFlash(在系统启动后提示Please press Enter to activate this console.此时按一下回车键进入控制台)

[MiniBoard]# mkdir /mnt [MiniBoard]# mkdir /mnt/nand [MiniBoard]# mount -t jffs2 /dev/mtdblock4 /mnt/nand [MiniBoard]# cd /mnt/nand [MiniBoard]# cp -a /work/fs/* . [MiniBoard]# sync [MiniBoard]# cd / [MiniBoard]# umount /mnt/nand
 * 从NandFlash启动系统
 * 给ICETEK-OMAP3530-Mini系统重新加电,停止UBoot程序运行,进入UBoot的命令行状态

OMAP3 Miniboard # setenv bootargs 'console=ttyS2,115200N8 console=ttyS0 noinitrd root=/dev/mtdblock4 rw rootfstype=jffs2' OMAP3 Miniboard # save OMAP3 Miniboard # boot

系统的安装与测试

 * -OMAP中的ARM是通过JTAG口进行程序的烧写吗?如果我要调ARM的程序,如何调试?是通过串口调,还是通过ARM的20针的JTAG口调？有什么软件吗？:当然可以用JTAG烧写,同时支持串口下载烧写,USB下载烧写,或直接制作SD卡启动盘(需要一个SD读卡器).如果调试的程序在linux之下,最佳的调试办法是printk,如果调试程序是一个单独的测试程序,可以用我们的560U仿真器.如果使用我们的560U,目前的软件是CodeComposerStudio

硬件设计

 * -OMAP3是什么:OMAP3系列是TI推出的通用高性能处理器,其面对的领域超越DSP所能涵盖的范围,从大范围的角度讲,现有的任何一颗通用处理器都在OMAP3的覆盖范围之内.具体地说,TI的OMAP3希望成为现有的通用嵌入式ARM的替代品.例如,在教学和研发中广泛使用的SAMSUNG S3C2410,S3C2440系列,ATMEL的AT91系列,NXP的LPC高端系列以及原来Intel的PXA270系列芯片,都是OMAP3可以替代的产品.简单说,OMAP就是高端ARM,OMAP是全能的.
 * -OMAP3包含什么:OMAP3包含的主要部分是ARM Cortex-A8,2D/3D图形加速模块和基于C64x+的DSP算法加速内核.此外,OMAP3还具有一些重要的外设如:图像捕获端口,USB HighSpeed2.0 HOST,USB HS OTG等硬件外设.

其他问题

 * -Can we have an English version of this article, too? Dirk:感谢Dirk为我们的网页添加google英文翻译链接!


 * -ICETEK-OMAP3530-MINI第三版什么时间能够发售？会和现在的版本有些什么区别？
 * Mini Board的V3版的改进部分和发布时间，暂不确定.