加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

BareBox 移植及系统自动更新(一)

发布时间:2020-12-15 18:25:37 所属栏目:百科 来源:网络整理
导读:原来一直使用友善之臂的uboot 启动,只是分区什么的都不能随意更改,很是郁闷 糟糕的是他的 flash 驱动没有公开,所以一直对避免对启动部分修改,不过最近总是莫名奇妙的不能启动,直接死在加载 kernel 的时候,有点提示也没有,这样的产品肯定是合格不了的

原来一直使用友善之臂的uboot 启动,只是分区什么的都不能随意更改,很是郁闷

糟糕的是他的 flash 驱动没有公开,所以一直对避免对启动部分修改,不过最近总是莫名奇妙的不能启动,直接死在加载 kernel 的时候,有点提示也没有,这样的产品肯定是合格不了的,所以只能是硬着头皮移植bootloader了,

网上一通搜索发现了 barebox 特点主要有三句话:

  1. derived from?Das U-Bootbarebox?
  2. developers are dedicated to the?Linux kernel's coding style and code qualitybarebox?
  3. tries to stick as closely as possible to the methodologies and techniques developed in Linux

其中第一点保证了 uboot 用户的过度

第二点,是用户熟悉linux 就熟悉 barebox 的架构了,省了很多学习的麻烦

第三点,哈哈是最给力的了,让在barebox 中编程,就好像在系统中编程一样,驱动一直,程序添加,shell ... 等都和在Linux 中差不多真是太爽了,我我我,就直接把原来在 Linux 中一直的友善之臂的 2G MLC 驱动拿过来了,

小声说一句,在项目总还是不要用这个nand flash 好,文档里面推荐的是 12bit 的校验,其实硬件不支持,他的驱动只是用了 8bit 校验纠正,MLC 本来就不比SLC 稳定,现在校验修正的位数还不够官方推荐的位数,启动不出问题才怪呢!


言归正传,barebox还有其他的很多非常好的功能,比如

  1. 菜单功能(可以让你自己向定制电脑启动菜单一样定制barebox 的启动菜单)
  2. 脚本功能(简直就是一个简化的linux shell,会shell 就会怎么写barebox 的shell)
  3. 变量分区的保存(这个是变化比较大的地方,不能像原来一样直接setenv saveenv ?设置变量了),只能通过吧变量写到脚本里面,当成一个文件保存到变量分区,然后在启动的时候执行脚本,虽然功能上很强大,但是感觉没有原来的那种方式简洁!


废话不说了,开发需要,想在启动的过程中完成?

  1. 第一次启动,自动从上位机软件获取一个唯一的设备号,甚至是网口的物理地址
  2. 第一次启动的时候从上位机获取内核文件,文件系统,自动烧写到flash,
  3. 如果不是第一次启动则比较上位机版本,可以完成通过网口自动更新,内核以及只读的核心文件系统
  4. 启动过程中检查内核以及文件系统分区是否读取成功,如果三次不成功,自动从上位机获取并烧写进flash

功能如上:

但现实情况是:第一次启动的时候没有 IP,mac 地址,随便设置的又不能保证能在当前的网络环境中通信,所以只能按照dhcp的方式,进行udp 广播,上位机软件响应下位机的 udp 广播,完成如下功能

  1. 响应下位机的 获取设备号请求(上位机从服务器获取空闲的设备ID,便于记录设备批号,以及在通信中唯一标示该设备)
  2. 响应下位机的获取当前最新内核版本请求(这样只要上位机设备管理软件运行,下位机Linux 就可以一直保持最新)
  3. 响应下位机的获取内核,文件系统的请求

所有以上请求都是通过广播方式请求和回应的!因为实际使用中就是在局域网中使用,所以.....



还没到正题上,等下次再继续吧!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读