目前正在研究SmartArm3250的Linux驱动方面,所以首先就要在开发板上安装(也可以称为下载)Linux系统,按照书上的步骤,遇到一些小问题,通过多次试验和总结,现在可以熟练的安装Linux系统了,总结一下,其中包含个人的见解和自己找到的资料。
首先,介绍一下安装Linux的大致步骤。开发板就像一个裸机一样,什么都没有(当然有硬件),首先要安装一个类似于电脑中BIOS一样的东西,还有一个引导操作系统的东西,然后就是装入内核镜像,不是.iso文件哦,是编译内核生成的一个东东,最后就是一个文件系统,类似于电脑中的各个分区,也可以理解成光是C盘的各种东西,而与电脑中安装系统的不同之处在于,这个文件系统是自己手动安装上去的,而且分为两种文件系统,一个是安全文件系统,另一个是根文件系统。对于普通的电脑来说,是通过光盘或者U盘等移动设备进行安装的,但对于开发板,它不能直接读取这些媒介中的安装程序,所以就需要通过串口或网线进行传输,而且是传输已经成型的系统文件。
再说几点需要注意的:1、在安装Linux的全程中,开发板上的ISP跳线可以一直处于短接状态;2、串口调试的时候,在Windows下使用的超级终端,对应在Linux下使用的是minicom,功能一致,操作不同,也可以使用zlg提供的Tera Term工具;3、在下载Bootloader的时候,一定要保证J2跳线(就是处于JP13跳线右边的)是断开的;4、在装载Bootloader时,弹出对话框提示复位的时候,需要先点击确定键,对话框消失后再按下复位键。
好了,大致的步骤和原理说的差不多了,下面就正式开始在SmartArm3250上搭建Linux开发平台:
一、安装Bootloader。其中包括Kickstart、S1L和u-boot,Kickstart需要存储在NAND FLASH的0号扇区(顺便说一下,在SmartArm3250的NAND FLASH中,一个扇区的大小为128KB,从0开始,对应的地址为0x00000000);S1L即stage 1 loader,存储在1号扇区,作用基本都是用来初始化和引导SmartArm3250的,这两个文件(kickstart.bin和stage1.bin)都是通过串口传输到开发板中的,使用的工具是zlg光盘中的UpdateBootloader.exe程序,在下载这两个文件之前还要通过UpdateBootloader.exe向开发板中下载bootloader.bin,如果下载完成的话,在UpdateBootloader.exe工具中点击代码检测按钮,对应的NAND Flash项前的圆形图标会变成绿色,并在后面提示有效,说明下载成功。再次说明一下,在装载Bootloader时,弹出对话框提示复位的时候,需要先点击确定键,对话框消失后再按下复位键。
二、安装u-boot。这时就需要通过串口调试了,通过超级终端或者minicom(个人推荐在Tera Term中进行这一步,因为我在用minicom传输u-boot.bin的时候,总是不能传输完整,导致不可用,至今未解决。。。)与开发板连接好,当然首先是要把串口线接好,然后按下复位键,这时会看到kickstart和S1l的启动过程,光标停留在“SmartArm3250>”后,即S1L命令提示符,然后再输入erase 2 10 1,擦除u-boot存放的扇区,再输入load term raw 0x83fc0000,向首地址为0x83fc0000的存储单元存储东西,然后点击File->Send file,选择u-boot.bin,传送完毕后点击Control->Send break,返回S1L命令提示符,输入nsave,将u-boot.bin写入NAND FLASH中,最后输入aboot flash raw 0x83fc0000,保存自启动配置,按下复位键,下次启动时就可以进入u-boot控制界面下了。
三、安装内核和安全文件系统。此后的串口调试都可以在linux的mincom下操作了,因为至今未发现错误。按下开发板上的复位键后,先迅速按一下任意键,进入S1L命令控制下,输入erase 12 2036 1,。擦除除kickstart、s1l和u-boot外的NAND FLASH扇区,然后再按开发板上的复位键,进入u-boot命令控制台下,通过tftp传输协议,把内核镜像和安全文件系统下载到开发板中。由于开发板默认ip为192.168.7.XX,所以要进行tftp传输时,要把电脑也的ip也设置成192.168.7.XX(说句废话,记得插网线哦。。。)。下载内核镜像的过程如下,首先输入tftp 80008000 uImage,就是把tftp服务器中的uImage文件传输到开发板的首地址为0x80008000的存储空间内,然后输入nand erase clean 0x00200000 $(filesize),目的是以0x00200000为首地址开始,擦除长度为 filesize bytes的空间,这句话的作用和在S1L下的erase命令是一样的,下一步输入nand write.jffs2 0x80008000 0x00200000 $(filesize),作用是把首地址为0x80008000,长度为filesize的一段存储空间内的东西,写入到首地址为0x00200000的空间中,再输入setenv kernelsize $(filesize),作用是设置内核大小为fliesize,这样就把内核镜像下载好了。下载安全文件系统的过程如下,首先输入tftp 80008000 safefs.cramfs,然后输入nand erase clean 0x00600000 $(filesize),再输入nand write.jffs2 0x80008000 0x00600000 $(filesize),指令的作用和下载内核镜像时是一样的,就不多说了。下载好内核镜像和安全文件系统后,再输入saveenv,作用是保存刚才的环境配置。如果不明白上面的那些地址和参数是怎么回事,只要看看这里,就应该明白了,这些都是纯粹的对地址和块进行操作,没有什么技巧可说,就是死的东西,只要记住就可以了。
四、安装根文件系统。这时就需要一个存有rootfs.tar.bz2和burn文件的SD卡(因为书上只说了用SD卡安装的方法,我自己试了其他方法都不成功),把它插到开发板的卡槽上,其中burn文件的内容如下:
这是一个简单的shell程序,目的就是把rootfs.tar.bz2解压出来,就是一个根文件系统。安装好内核镜像和安全文件系统,在输入saveenv后,输入run safemode,这时会进入一个所谓的安全模式下的Linux系统,在系统启动的时候,就会自动扫描SD卡,然后运行burn文件,自动将根文件系统解压出来,然后reboot重启(安装过好多次系统,发现这条命令基本是不会执行的),看到在minicom下显示正在重启的提示后,它会死在那里不动,这时要手动按下开发板上的复位键,重启后,就可以自动进入Linux系统了。
五、安装完成。这时可以再开发板的显示屏上看到Qt桌面,在电脑的minicom下可以看到类似于终端的操作界面,由于开发板上是裁剪后的Linux系统,所以只支持一些简单的操作命令。
好了,至此为止,就在SmartArm3250上搭建好了Linux系统,由于我是基于随开发板赠送的指导书上进行的,上面有一些写的不周详,我是通过自己试验总结的,不过其中一些步骤会有很多方法,书中只介绍了几种,所以我试验的方法也不是所有的,可能会遗漏一些更为方便的方法,大家可以给我提出来,有什么不同的见解也可以和我讨论。