TQ2440 linux 移植
这里使用的都是天嵌公司提供的资源来移植的。
内核编译:
首先编译系统内核,这个可以按照《linux移植之step by step》的附录5来一步步操作。当然我已经将配置好的config文件保存起来了,即/opt/EmbedSky/linux-2.6.30.4/arch/arm/configs/s3c2410_defconfig。(这里一定要注意一点,配置完内核后要保存配置信息,同时还要保存为另一个配置文件名称.config,否则系统会按默认的配置进行内核编译。),执行make和make zImage来编译内核。
编译内核时,要使用root用户,否则会出现各种莫名其妙的错误。
根文件系统编译:
接着创建根文件系统,首先创建一系列目录以及目录中相关的文件,然后使用命令mkyaffs2image命令来将整个文件夹制作成根文件系统镜像。
以后,每次编译完新的程序就可以放到该文件系统目录中,然后再编译整个目录,再下载到板子中。
如果每次都将根文件系统下载到flash中,不但损伤flash,同时也会浪费时间(写入flash的时间要比写入SDRAM的时间要长)。所以最好可以把文件系统直接下载到SDRAM来进行程序调试。基本上有两种方法可以提供:
- 使用u-boot中的tftp指令来将内核或者根文件系统下载到SDRAM。
- 使用openjtag,用软件openocd来直接将内核和文件系统下载到指定位置。
用TFTP协议来下载文件(ubuntu10.10):
1, 首先下载tftp软件包 - tftp(客户端), tftpd(服务器), xinetd(网络请求的守护进程, 当xinetd接到连接时,它能够确定连接所需的程序,启动相应的进程,并把socket交给它)。
sudo apt-get install xinetd tftpd tftp
2, 创建tftp配置文件/etc/xinetd.d/tftp。
sudo vi /etc/xinetd.d/tftp
配置如下:
service tftp
{
protocol = udp
port = 69
socket_type = dgram
wait = yes
user = nobody
server = /usr/sbin/in.tftpd
server_args = /tftpboot
disable = no
}
3, 产生服务器目录/tftpboot:
sudo mkdir /tftpboot
sudo chmod -R 777 /tftpboot
sudo chown -R nobody /tftpboot
4, 重新启动xinetd服务:
sudo /etc/init.d/xinetd stop
sudo /etc/init.d/xinetd start
5, 测试tftp server是否设置好:
tftp 192.168.0.123 (服务器ip地址)
tftp> get zImage
tftp> quit
6, 更改有线网卡的ip地址。
sudo ifconfig eth0 192.168.0.123 (这里ip地址对应于板子上uboot的设置,注意eth0一定是你连接的那个网卡)
7, 你也可以查看和设置板子上uboot的参数
printenv (查看uboot的参数,包括serverip和ipaddr等)
setenv serverip 192.168.0.123 (更改uboot的参数,同理可以更改ipaddr等)
saveenv (更改完参数后一定要记住保存,否则重启后参数更新)
6, 完毕,现在就可以利用网络来下载内核及文件系统
uboot> tftp 30000000 zImage (S3C2440的SDRAM区间从30000000开始)
uboot> tftp 30008000 root.bin
使用tftp的注意事项:
纠结了一天,始终连接不上的原因是选错网卡了,现在的笔记本一般都既有兼有有线网卡和无线网卡,由于我们要使用有线网卡,所以一定要注意选对网卡,然后再更改ip地址。
下一步要研究一下如何可以在板子上的linux系统通过网络mount主机(host)的目录,这样有助于调试的方便。
引用:
[1] Installing and Testing TFTP Server in Ubuntu/Debian, http://mohammadthalif.wordpress.com/2010/03/05/installing-and-testing-tftpd-in-ubuntudebian/
Comments
Post a Comment