本发明涉及Linux系统技术领域,具体的说全自动化烧写Linux系统及其应用程序,主要是一种多设备同步烧录Linux固件及应用程序的方法。

背景技术:

随着计算机技术、互联网技术和单片机技术的深入发展,嵌入式系统在经历了几十年的发展历程后,又进入了一个新的历史发展阶段,即从普遍低端应用进入到一个高、低端并行发展,并且不断提升低端应用技术水平的时代,其标志就是32位嵌入式系统的发展。网络、通信、多媒体、信息家电时代的到来,嵌入式系统得到大规模的应用。各种各样的新型嵌入式系统设备在使用频率上已经大大超过个人计算机。人们已经拥有大大小小各种嵌入式技术的电子产品,小到手表、MP3等微型数字化产品,大到车辆导航、家用电器、多媒体电器;而在服务行业和工业领域中,嵌入式技术的医疗设备、工业过程控制、各种智能ATM终端等正在逐渐改变传统的服务方式,提高工业生产效率。目前,我国嵌入式系统的发展十分迅速,其发展正从嵌入式系统走向嵌入式产业,巨大的市场需求不断加速嵌入式系统的产业化进程。随着嵌入式产业的不断发展,嵌入式设备的生产效率也要求不断的提高;

目前在嵌入式开发中,经常要实现将对应的固件,烧写到开发板中,然后开发板才能运行我们的程序。嵌入式开发,很多用的是Linux系统,也有用WinCE和其他系统,Linux系统中,多数为bootloader+kernel+rootfs的模式。其中,所用的bootloader,多为uboot。负责初始化硬件和设置好软件环境,然后加载kernel,运行kernel,kernel运行后,再去加载rootfs,之后就是你所看到的运行的Linux了。其中,在开发过程中,常常会遇到,需要把某个文件,比如U-boot.bin,uImage,rootfs等文件从PC上,下载到Uboot的SDRAM,即内存中,然后再用对应命令或工具,将数据写入到某存储介质中。传统的嵌入式设备从设备贴片回来后首先要进行固件的烧写,烧写完成后才能进行下一步工作;而传统的烧写方式,将固件从PC端下载到开发板中的各种方式,主要包括JTAG、NFS挂载、Nand Flash和Nor Flash,USB,RS232,网卡NIC等方式;而这些方式都是需要人为的去烧录每台设备,这就大大提高了人力成本和降低了生产效率,严重情况下还会影响企业的生产。

技术实现要素:

本发明的目的在于克服现有技术存在的不足,而提供一种多设备同步烧录Linux固件及应用程序的方法,实现更方便、更快捷的生产。本发明鉴于AM335x系列芯片可以通过网口启动的方式将MLO,UBOOT,KERNEL,ROOTFS通过TFTP的方式下载至开发板,并可通过NFS的方式完成文件系统的挂载。因此,对最小系统板而言,仅需网口便可完成整个Linux的启动,即刚贴片回来的设备可直接通过网口进行设备的烧写与启动;本发明基于网口的启动方式,对网口启动的操作流程进行描述,并着重介绍了如何配置虚拟机和使用网口启动方式进行flash的烧写,待固件烧录完成后Linux系统会自动去更新最新的应用程序。本发明需要虚拟机具备DHCP和TFTP服务器功能,当设备上电后虚拟机给设备分配IP,然后设备会通过TFTP请求下载相应的烧写文件。

本发明的目的是通过如下技术方案来完成的。这种多设备同步烧录Linux固件及应用程序的方法,其特征在于:该方法包括如下步骤:

(1)、采用网口启动方式,设备上电后虚拟机给设备DHCP一个IP,待设备获得IP后去服务器请求UBOOT文件;

(2)、设备获取到UBOOT文件后,网口启动的任务已经完成,UBOOT启动后,将去服务器获取脚本并在内存中执行脚本,该脚本的任务是重新去TFTP服务器上获取UBOOT、KERNEL、ROOTFS文件并烧写至FALSH中,烧写完成后重新启动设备;

(3)、待这些固件全部烧写完成后,Linux系统启动后运行文件系统里面的app程序,去主机上更新最新的应用程序。

本发明的有益效果为:

(1)网口烧写最多可支持255台同时烧写,大大提高了生产烧写效率,烧写完成后观察指示灯是否亮起表示是否完成烧写;

(2)无需人为操作,只要把设备上电接入网口即可自动完成烧写;

(3)固件烧录完成后,系统会自动更新应用程序,从固件到应用程序的烧写全程无需人为操作;唯一需要人为操作的就是把设备通上电接上网线;

本发明提出的多设备同步烧写方法,大大节省了在生产时烧录的时间并且还具备自动更新应用程序的功能全程无需人为操作,大大提高了生产效率,因而,具有很好的使用价值。

附图说明

图1是本发明的典型应用;

图2是本发明中流程框图。

具体实施方式

下面将结合附图和实施例对本发明做详细的介绍:

本发明依据以下原理来实现多设备同步烧写固件及应用程序:

(1)设备上电后引导加载程序会自动执行这些代码,如选择哪种方式启动(NAND,SDcard,UART,EMAC。。。),然后跳转转到第二级bootloader。本发明采用网口启动方式,设备上电后虚拟机会给设备DHCP一个IP(因为一个网段最多是255个,所以我们可以同时烧写255台设备),待设备获得IP后便会去服务器请求UBOOT文件;

(2)设备获取到UBOOT文件后,网口启动的任务已经完成,UBOOT启动后,将会去服务器获取脚本并在内存中执行脚本,该脚本的任务是从重新去TFTP服务器上获取UBOOT、KERNEL、ROOTFS文件并烧写至FALSH中;烧写完成后重新启动设备;

(3)待这些固件全部烧写完成后,Linux系统启动后运行文件系统里面的app程序,去主机上更新最新的应用程序。最多可支持255台同时烧写,且无需人为操作,只要把设备上电接入网口即可自动完成烧写。

实施例:

本发明的典型应用如图1所示,由一台装有Linux虚拟机的PC和交换机组成,而交换机下可以接至多255台需要烧写的设备;本发明的流程如图2所示;

PC环境:

主机:Windows 7及以上

虚拟机:VMwave Workstation,Ubuntu 10.04及以上版本;

Linux SDK版本:ti-sdk-am335x-evm-05.06.tar及以上版本;

AM335x开发板平台:GPEVM

网口启动配置流程:

在Ubuntu中安装TFTP服务,确保可以正常TFTP download。

本示例中,TFTP目录为”/tftpboot”。

用sudo apt-get install tftpd-hpa安装TFPT服务器

sudo apt-get install xinetd安装新一代进程守护程序

配置TFTP服务器

sudo vim/etc/default/tftpd-hpa

将原来的内容改为:

TFTP_USERNAME="tftp"

TFTP_ADDRESS="0.0.0.0:69"

TFTP_DIRECTORY="tftp根目录"#服务器目录,需要设置权限为777,chomd 777

TFTP_OPTIONS="-l-c-s"

sudo service tftpd-hpa restart//重新启动TFTP服务

#service xinetd restart//重启xinetd服务重启tftp服务

iii.保存后退出.

c.增加地址空间定义。修改“/etc/dhcp3/dhcpd.conf”。

i.vim/etc/dhcp3/dhcpd.conf

ii.在文件的末尾,加入以下信息:

subnet 192.168.1.0netmask 255.255.255.0{

range dynamic-bootp 192.168.1.100 192.168.1.199;

if substring(option vendor-class-identifier,0,10)="AM335x ROM"{

filename"u-boot-spl-restore.bin";

}elsif substring(option vendor-class-identifier,0,17)="AM335x U-Boot SPL"{

filename"u-boot-restore.img";

}else{

filename"flash-image.out";

}

}

iii.保存并退出

d.设置本机的eth0网卡ip为192.168.1.1:

ifconfig eth0 192.168.1.1

e.重启DHCP服务:

/etc/init.d/dhcp3-server restart

/etc/init.d/networking restart

至此,Ubuntu的DHCP服务建立已经完成。

iii.保存并退出

d.设置本机的eth0网卡ip为192.168.1.1:

ifconfig eth0 192.168.1.1

e.重启DHCP服务:

/etc/init.d/dhcp3-server restart

/etc/init.d/networking restart

至此,Ubuntu的DHCP服务建立已经完成。

注:DHCP的服务,Ubuntu12.04及以上版本亦可以使用isc-dhcp-server。

步骤a中对应的命令:apt-get install isc-dhcp-server;

步骤b中对应的文件为/etc/default/isc-dhcp-server;

步骤c中对应的文件为/etc/dhcp/dhcpd.conf;

步骤e中,对应的命令为/etc/init.d/isc-dhcp-server restart。

3.Linux sdk对网口启动的相关设置:

a.在Linux SDK 05.06中,在uboot中使用am335x_evm配置编译出UBoot的相关文件;

b.编译完成后,将生成的spl目录下的u-boot-spl.bin文件拷贝至TFTP文件夹下,并

重命名为u-boot-spl-restore.bin;

c.类似的,将生成的spl目录下的u-boot.img文件拷贝至TFTP文件夹下,并重命名为u-boot-restore.img;

d.至此,主机的配置已经全部完成。使用网线将AM335x的开发板的网口1连接至PC机,给开发板上电,进行网口启动。

注意:当使用EMAC启动时,不要使用网线直连板子和电脑,使用交换机或者路由器(关闭DHCP服务),确保网段内,没有其他的DHCP服务器。

4.Linux开发包对网口烧写flash的相关设置:

a.类似于3的步骤a、b、c,但在uboot编译时,使用am335x_evm_restore_flash配置编译出UBoot的相关文件,此时得到的u-boot-spl.bin和u-boot.img重命名后即为用于网口烧写的启动文件。使用该配置编译生成的uboot与之前不同的是,在启动后,会调用脚本文件debrick.scr,进行flash的烧写操作。

b.脚本文件debrick.scr的制作(以NAND flash作为示例):

i.脚本文件debrick.scr的源文件,可以参考u-boot文件夹下的

/doc/am335x.net-spl/debrick-nand.txt。源文件中可使用UBoot阶段的相关

命令对NAND flash进行操作。类似的,也可以对SPI flash进行操作。

ii.使用mkimage工具将源文件debrick-nand.txt制作成为debrick.scr

(mkimage位于u-boot文件夹下的tools文件夹中),命令如下

./mkimage-A arm-O U-Boot-C none-T script-d debrick-nand.txt debrick.scr

iii.将debrick.scr拷贝到TFTP文件夹中。在启动时,会在uboot中自动调用。

c.将需要烧写到NAND FLASH的MLO和u-boot.img文件拷贝到TFTP文件夹中。

d.完成以上各步骤后,即可设置AM335的启动模式并连接网线进行网口烧写flash。

注:当安装完这些服务后设备还不能进行自动烧写时,用ifconfig命令观察网口ip是否正确;再把dhcp、tftp和网络服务重启;

sudo/etc/init.d/isc-dhcp-server restart

sudo/etc/init.d/xinetd restart

sudo/etc/init.d/networking restart

设备烧写完成后应用程序将会执行,会有运行指示灯提示;人为的工作只需把设备接上电源插上网线然后静静等待即可;

以上所述,仅为本发明较好的实施方式而已,并不构成对本发明保护范围的限定。任何在本发明精神之内所作的修改、等同替换和改进等,均应包含在本发明的权利要求保护范围之内。

linux应用程序固件升级,一种多设备同步烧录Linux固件及应用程序的方法与流程...相关推荐

  1. linux进入节点权限,一种基于索引节点的Linux访问权限控制方法与流程

    本发明涉及计算机领域,尤其涉及一种基于索引节点的Linux访问权限控制方法. 背景技术: 传统的Linux访问控制方式是DAC(Discretionary Access Control,自主访问控制) ...

  2. matlab换挡程序,一种基于MATLAB换挡过程中快速锁定分析数据的方法与流程

    本发明涉及汽车变速器数据分析,特别的,涉及一种基于matlab换挡过程中快速锁定分析数据的方法. 背景技术: 自动变速器的核心功能是能根据驾驶员意图进行自动换挡,解放驾驶员的左脚:在自动变速器的使用过 ...

  3. 嵌入式linux lvds,一种嵌入式主板实现双LVDS显示输出的电路及方法与流程

    本发明属于主板显示输出技术领域,尤其涉及一种嵌入式主板实现双LVDS显示输出的电路及方法. 背景技术: 通常情况下嵌入式主板平台实现双LVDS输出显示,都是通过扩展信号转换芯片,信号转换芯片的初始化程 ...

  4. 运行python程序的两种方式交互式和文件式_执行Python程序的两种方式

    交互式(了解) 交互式环境下,敲完一条命令按下enter键马上能看到结果,调试程序方便.程序无法永久保存,关掉cmd窗口数据就消失了. 命令行式(了解) 打开文本编辑器,在文本编辑器中写入一串字符. ...

  5. 电磁诱导透明matlab程序,一种实现类电磁诱导透明效应的超材料及方法与流程

    本发明涉及光电技术领域,具体涉及一种实现类电磁诱导透明效应的超材料及方法. 背景技术: 电磁诱导透明(eit)描述的是在宽吸收曲线中产生的尖锐透射窗口的一种实验现象,这种现象伴随着光的色散特性的改变, ...

  6. flash写保护原理_一种基于flash写保护的防止flash被意外篡改的方法与流程

    本发明属linux嵌入式芯片安全技术领域于领域,尤其是涉及一种nandflash写保护应用方法. 背景技术: 目前很多公司都纷纷尝试智能设备(sd,smartdevice)领域,sd设备功能越来越多, ...

  7. android pppd流程,一种基于PPPD实现PPP‑Server功能的通信模块及其实现方法与流程...

    本发明涉及计算机通信 技术领域: ,具体涉及一种基于PPPD实现PPP-Server功能的通信模块及其实现方法. 背景技术: :在网络通信 技术领域: 中,通常采用以下方式进行通信:如4G数据模块多采 ...

  8. matlab鬼成像,一种基于光计算的可视化计算鬼成像系统及成像方法与流程

    本发明涉及成像探测领域,具体为一种基于光计算的可视化计算鬼成像系统及成像方法. 背景技术: 光学鬼成像技术是通过双路光信号符合探测恢复待测物体空间信息实现的.其特点是包含物体信息的信号光(signal ...

  9. 时间窗口算法用matlab,一种基于动态规划算法的时间窗口相关的参与者选择方法与流程...

    本发明涉及一种移动群智感知中时间窗口相关的参与者选择方法,特别地,涉及一种基于动态规划算法的时间窗口相关的参与者选择方法. 背景技术: 在移动群智感知网络中,智能设备中嵌入了麦克风.相机.温度传感器. ...

最新文章

  1. linux系统改ip地址 永久生效,Linux修改IP永久生效
  2. MySQL 中and 与or的优先级
  3. P1886 滑动窗口(求连续区间最值的O(N)解法,单调队列)
  4. 世上最经典的25句话
  5. 如何在A用户下建立视图,这个视图是A的表与B的表进行关联的?
  6. silverlight Balder 动态材质(用网上的图片)
  7. 唤醒锁: 检测 Android* 应用中的 No-Sleep(无法进入睡眠)问题
  8. Python数据结构与算法(二)栈和队列
  9. Convert Sorted List to Binary Search Tree ------C++ 递归创建平衡二叉查找树
  10. java给xyz大小排序_Java Collection - 002 排序
  11. ORACLE11g R2下载地址
  12. android手势密码csdn,LeetCode 351. 安卓系统手势解锁(回溯)
  13. VMware如何彻底卸载干净
  14. OFFICE 图标异常解决办法
  15. Bootstrap系列之下拉菜单(Dropdowns)
  16. 利用Python写个新年贺卡生成器,提前祝大家小伙伴们新年快乐呀~
  17. 电脑磁盘分区、合并的方法指南!
  18. Unity3d 动态字体
  19. Java什么是面向对象和面向对象特性
  20. 生成二进制反射格雷码

热门文章

  1. TIA Portal(博途)弹出安装重启窗口的解决方法
  2. 根据地址智能识别省市县/区
  3. centos7使用基础教程_如何在CentOS 7上使用Metricbeat收集基础结构指标
  4. 2021年软考信息系统监理师考试知识点整理
  5. linux 给文件替换字符串/替换内容/替换某行 (shell,sed)
  6. linux服务器中开启新的ip端口
  7. 天池NLP学习赛(1)赛题理解
  8. 51控制继电器的C语言程序,C51单片机红外遥控控制继电器源程序
  9. 【数据可视化应用】绘制词云图(附Python代码)
  10. Ubuntu Unable to run mksdcard SDK tool 解决办法