TQ2440之uboot---8.tftp下載內(nèi)核并啟動內(nèi)核
TQ2440 + uboot1.1.6
1. uboot修改
1.1common/main.c
在函數(shù) main_loop大約513行:
char cmd_buf[200];
printf("Booting Linux ...n");
//boot_zImage(0x200000,0x200000);//注釋boot_zImage
strcpy(cmd_buf,"tftp 0x30008000 zImage; boot_zImage");//tftp內(nèi)核到內(nèi)存的0x30008000,然后啟動zImage;
run_command(cmd_buf,0);//這兒只不過是由以前的從nandflash取數(shù)據(jù)改變?yōu)閺膎and flash取數(shù)據(jù)
1.2 lib_arm/boot_zImage.c
151intboot_zImage(ulong from,size_t size)
152{
162 /*printk("Copy linux kernel from 0x%08lx to 0x%08lx, size = 0x%08lx ... ",from,to,size);//注掉從nand_flash中拷kernel部分,當然這兒也可以自己添加新的命令
163 ret=copy_kernel_img(to,(char*)from,size);
164 if(ret){
165 printk("failedn");
166 return-1;
167}else{
168 printk("Copy Kernel to SDRAM done,");
169 }*/
177}
2. ubuntu中tftp的安裝
a.root@ubuntu:~#apt-getinstall tftpd tftp openbsd-inetd;安裝
b.root@ubuntu:~#vi im/etc/inetd.conf;配置tftp文件路徑
tftp dgram udp wait nobody/usr/sbin/tcpd/usr/sbin/in.tftpd/tmp
c.root@ubuntu:~#chmod 777/tmp
d.root@ubuntu:~#/etc/init.d/openbsd-inetd restart;重啟服務(wù),使配置生效
root@ubuntu:~#netstat-an|grep 69;查看69端口是否打開
root@ubuntu:~#tftp 192.168.1.2;tftp 本機ip測試一下
tftp>gettest.txt
注意:/root不可以作為tftp根目錄,設(shè)置tftproot為:/tmp
3. 修改內(nèi)核Makefile
arch/arm/boot/Makefile中
56 $(obj)/zImage:$(obj)/compressed/vmlinux FORCE
57 $(callif_changed,objcopy)
58 cp-arf arch/arm/boot/zImage/tmp/zImage
59 @echo'Kernel:$@isready
將新生成的zImage拷貝到 /tmp中