完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
嵌入式开发更新kernel需要fastboot或者tf卡拷贝,tftp可以下载kernel和dtb系统配置文件。nfs可以很方便的更新系统程序,当然应用程序也可以很方便的更新,配合ssh,可以在一个键盘和显示器上完成所以工作,将是开发的必备手段。 第一步,ubuntu下安装tftp sudo apt-get install tftpd vim /etc/xinetd.d/tftp,修改成如下信息或者设定自己的tftp目录。 service tftp { protocol = udp port = 69 socket_type = dgram wait = yes user = nobody server = /usr/***in/in.tftpd server_args = /tftpboot disable = no } chmod 777 -R /tftpboot,记得添加权限。 sudo service xinetd restart 重启服务后者干脆重启系统。 第二步,ubuntu下安装nfs服务 sudo apt-get install nfs-kernel-server vim /etc/exports --> # # Example for NFSv2 and NFSv3: # /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check) # # Example for NFSv4: # /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check) # /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check) # /opt/nfs_dir/ *(rw,nohide,insecure,no_subtree_check,async,no_root_squash) vim /etc/exports <-- 最后一行添加/opt/nfs_dir/目录。记得创建此目录sudo mkdir /opt/nfs_dir/ exportfs -a export sudo service nfs-kernel-server start 重启服务 showmount -e查看一下是否成功。 第三步,将编译好的zImage和myir_ricoboard.dtb拷贝到tftp目录下。 第四部,将04-Linux_SourceFilesystem下的matrix-rootfs.tar.gz解压到/opt/nfs_dir中。 第五步,uboot中添加如下环境变量,可以saveenv保存下来,不然每次都需要输入一次。 setenv serverip 192.168.9.217 setenv ipaddr 192.168.9.221 setenv gatewayip 192.168.9.1 setenv dnsip2 192.168.9.1 setenv netmask 255.255.255.0 setenv fdtfile myir_ricoboard.dtb setenv rootpath /opt/nfs_dir setenv netboot "echo Booting from network ...; setenv autoload no; tftp ${loadaddr} ${bootfile}; tftp ${fdtaddr} ${fdtfile}; run netargs; bootz ${loadaddr} - ${fdtaddr}" 执行一下命令: ping 192.168.9.217 link up on port 0, speed 100, full duplex Using cpsw device host 192.168.9.217 is alive 执行run netboot命令 我们可以看到kernel和文件系统都起来了,对比前面的kernel和文件系统,我们的tftp和nfs设置成功了。 补充: 1)Ethernet在uboot的启动流程 1.1根据芯片自身的架构调用uboot默认函数eth_initialize,可以在arch/ARM/lib/board.c中调用,也可以在common/board_r.c中调用,这就要看芯片提供商的源代码结构 1.2eth_initialize函数调用miiphy_init,phy_init和eth_env_init初始化。 miiphy_init函数初始化mii的结构体; phy_init是Ethernet芯片商的初始化函数 eth_env_init,查看环境变量中的文件名 1.3调用board_eth_init或者cpu_eth_init其一,看cpu提供商提供了哪个。 1.4 tftp实现在common/cmd_net.c中 int do_tftpb(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { int ret; bootstage_mark_name(BOOTSTAGE_KERNELREAD_START, "tftp_start"); ret = netboot_common(TFTPGET, cmdtp, argc, argv); bootstage_mark_name(BOOTSTAGE_KERNELREAD_STOP, "tftp_done"); return ret; } U_BOOT_CMD( tftpboot, 3, 1, do_tftpb, "boot image via network using TFTP protocol", "[loadAddress] [[hostIPaddr:]bootfilename]" ); TFTPGET标识调用到/net/net.c中,实现文件传输。Ethernet本身还有很多东西,大家有兴趣可以继续研究。 1.5 环境变量的定义结合eeprom一起看比较清晰。 1.6 run netboot中netargs设置是nfs成功的一个关键点,bootz是kernel启动的关键命令。 有了tftp和nfs我们就可以很方便的更新kernel和dtb配置文件和文件系统。 |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
【米尔-紫光MYB-J7A100T国产FPGA开发板试用】米尔-紫光PG2L100H国产FPGA开发板开箱评测
1035 浏览 0 评论
【米尔-紫光PG2L100H国产FPGA开发板试用】官方LED例程测试体验
5233 浏览 0 评论
【米尔-紫光PG2L100H国产FPGA开发板试用】上电测试报告
4881 浏览 0 评论
【米尔-紫光PG2L100H国产FPGA开发板试用】开箱评测!米尔电子PG2L100H开发板深度体验报告
1004 浏览 0 评论
【米尔-Xilinx XC7A100T FPGA开发板试用】+04.SFP之Aurora测试(zmj)
828 浏览 0 评论
【米尔-瑞米派兼容树莓派扩展模块-试用体验】基于ROS系统的三麦轮小车自主导航
3657浏览 2评论
【米尔NXP i.MX 93开发板试用评测】5、安装Debian和排除启动故障
734浏览 2评论
【米尔NXP i.MX 93开发板试用评测】2、异构通信环境搭建和源码编译
876浏览 2评论
【米尔-瑞米派兼容树莓派扩展模块-试用体验】Free RTOS应用开发环境部署
1463浏览 1评论
【米尔-芯驰D9开发板- 国产平台试用】- 03- 外设接口测试-U盘、485总线
6821浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 17:46 , Processed in 0.563390 second(s), Total 68, Slave 50 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号