搜档网
当前位置:搜档网 › 【详解】嵌入式开发中固件的烧录方式 v1[1].0

【详解】嵌入式开发中固件的烧录方式 v1[1].0

【详解】嵌入式开发中固件的烧录方式 v1[1].0
【详解】嵌入式开发中固件的烧录方式 v1[1].0

【详解】嵌入式开发中固件的烧录方式

版本:v1.0

作者: crifan

联系方式: green-waste (at) https://www.sodocs.net/doc/c95199783.html,

版本历史

目录

1背景介绍 (3)

2名词解释 (4)

2.1固件 (4)

2.2烧写 (4)

2.3存储介质 (4)

2.4USB H OST和USB D EVICE (4)

2.5NIC (5)

3固件烧写方式 (6)

3.1开发前期或者开发过程中,固件的烧写方式 (6)

3.1.1不需要烧写kernel和rootfs的方式 (6)

3.1.2将kernel,rootfs,uboot等烧写到存储介质上的方式 (8)

3.1.2.1一步到位:直接通过工具烧写文件到对应存储介质上 (8)

3.1.2.1.1Nor Flash (8)

3.1.2.1.2Nand Flash (9)

3.1.2.2两步到位:先将数据先写入到Uboot中,再用uboot中的命令把数据写到存储介质上 (10)

3.1.2.2.1如何把文件或数据下载到内存中 (10)

3.1.2.2.1.1USB (10)

3.1.2.2.1.1.1USB Host = USB Mass Storage = U Disk (10)

3.1.2.2.1.1.2USB Slave = USB Device (11)

3.1.2.2.1.2RS232 (12)

3.1.2.2.1.2.1Kermit (12)

3.1.2.2.1.2.2Ymodem (13)

3.1.2.2.1.3NIC/network (14)

3.1.2.2.1.3.1tftp (14)

3.1.2.2.1.3.2NFS (15)

3.1.2.2.1.4SD/MMC (16)

3.1.2.2.1.5JTAG == debug tool (17)

3.1.2.2.2如何把内存中的数据,写入到对应存储设备上 (18)

3.1.2.2.2.1Nand Flash (18)

3.1.2.2.2.2Nor Flash (19)

3.1.2.2.2.3USB (20)

3.1.2.2.2.4SD/MMC (20)

3.2产品发布后:通过操作设备节点实现动态升级固件 (20)

4引用 (22)

图表

图表 1 嵌入式开发中固件烧录的方式 (6)

图表 2 将文件下载到Uboot中的方式 (10)

图表 3如何把Uboot的内存中数据写入到存储设备上 (18)

1背景介绍

目前在嵌入式开发中,经常要实现将对应的固件,烧写到开发板中,然后开发板才能运行我们的程序。

嵌入式开发,很多用的是Linux系统,也有用WinCE和其他系统,但此文只介绍Linux系

统下面的情况。

Linux系统中,多数为bootloader+ kernel + rootfs的模式。

其中,所用的bootloader,多为uboot。负责初始化硬件和设置好软件环境,

然后加载kernel,运行kernel,kernel运行后,再去加载rootfs,之后就是你所看到的运行的Linux了。

其中,在开发过程中,常常会遇到,需要把某个文件,比如U-boot.bin,uImage,rootfs

等文件,从PC上,下载到Uboot的SDRAM,即内存中,然后再用对应命令或工具,将数据写入到某存储介质中。其中,有时候也需要在发布产品之后,在系统运行的情况下,动态升级整个系统的固件的。

此文就是主要探讨,此嵌入式Linux中,开发过程中和产品发布后,相关的固件烧写方式。

2名词解释

2.1固件

固件,firmware

所谓固件,就是文件,固化在存储介质上的文件,而文件,其实就是数据。

嵌入式开发中,尤其是Linux开发,常见的方式是,从板子(个人用的是arm的板子)上启动,会允许Uboot,然后Uboot去加载kernel内核,个人常用的kernel是uImage,然后Linux运行后,去加载根文件系统rootfs,个人常用到的yaffs2文件系统。

前后系统运行所需要的文件,总的来说,就是这三个:

Uboot,比如u-boot.bin

Kernel,比如uImage

Rootfs,比如yaffs2.rootfs.arm

而大家一直说的固件,在系统是Linux系统的情况下,常常就是指的是这些文件。

2.2烧写

所谓烧写,就是写数据,把文件(固件/数据)写到存储介质(Nand Flash, Nor Flash等)上。

而对于烧写这个词,说法很多,常见的有:

烧写=烧录=flash=编程=program=programming

下面另外提到的,更新固件,其实也指的是将新的固件烧写进去,即所谓更新固件,更新系统。

2.3存储介质

存储介质,此处主要是指,嵌入式中存放firmware的地方,多数是Nor Flash加上Nand Flash的组合。其他的,也有单独是Nor Flash,单独是Nand Flash,单独是SD/MMC卡等方式。

2.4USB Host和USB Device

USB Host,即对于开发板来说,USB是Host端,所以,此时可以去插上一个U盘,对应的是USB Mass Storage的用法,所以,可以理解为:

开发板是USB Host = USB Mass Storage =开发板可以外接 U盘

而USB Device,即对于开发板来说,自己是作为USB的Device端。

而USB Device端,相对于USB Host来说,也叫USB Slave端。

此时的UBS Host就是PC端了,然后PC端连出一根USB线,接上开发板,然后开发板就是USB Device=USB Slave端了,就可以当做U盘用了。

即:

开发板是USB Slave = USB Device = 开发板自己是PC上的U盘。

2.5NIC

NIC,Network Interface Card,网络接口卡,即网卡。

NIC这个叫法,是之前在学习网

络方面的知识的时候,遇到的,觉得虽然有点拗口,但是意义表述很明确,所以此处才用此NIC来表示网卡的。

3固件烧写方式

固件开发方式,这里讨论的主要有两种。

一种是开发过程中,产品发布之前,用到的一些方式。

另外一种是,产品发布之后,产品已经运行了系统了,此时,如何在线动态地更新固件,实现系统升级的功能。

先列出不同的分类:

图表 1 嵌入式开发中固件烧录的方式

下面就详细讨论这两种过程中所用到的固件升级方式。

3.1开发前期或者开发过程中,固件的烧写方式

此处介绍的是,在开发过程中,如何实现固件更新,开发调试,根据是否一定要将新版的固件,烧写到存储介质上,可以分两种。

一种是不需要烧写kernel和rootfs的方式;

另外一种是,需要把新版本的固件,即uboot,kernel,rootfs,烧写到存储介质上的。

3.1.1不需要烧写kernel和rootfs的方式

此种做法,在实际开发中,还是有一些人会用到的。

其背景是,嵌入式开发中,相对普通上层软件开发,每次新编译出一个版本的软件,都要很麻烦地烧录到对应的存储介质,比如Nor Flash上,然后给开发板上电,继续开始调试开发,而不能像开发上层PC端软件,在IDE中,编译一下,点击运行,即可看到最新结果。

所以,嵌入式开发中,开发的效率显得很低,其中一个方法,可以先对避开此问题,避免每次都要重新烧写新编译的程序的问题,那就是,对于新版本的kernel和rootfs,分别通过tftp或NFS挂在kernel,通过NFS挂在rootfs,的方式,重新编译一个新版本的kernel 或者是rootfs时,每次都不用重新烧写,只需要把对应的文件,放到对应的tftp或者NFS 的文件夹下面即可。

此法详细做法相关的部分内容,下面会涉及,故此处不做太多探讨。而且真的详细讨论的话,超出了此文的范畴。

此处,只是对于此法进行概要说明:

1. 目标

实现kernel通过tftp挂载,rootfs通过nfs挂载的方式,实现高效率的嵌入式开发

2. 前提

(1)硬件:

A. 开发板上有网卡

B. 网卡已连接到一个路由或交换机,并且PC端,即提供tftp和nfs的服务器端,也连到此网络,开发板和PC端,同属于一个局域网段。

(2)软件:

A. PC端,运行了tftp服务,新编译的kernel文件,放在tftp的根目录下

B. PC 端,运行了nfs服务,所用的Linux内涵,也设置并启用了对应的nfs服务,编译好的rootfs,放在nfs服务的根目录下。

3. 如何操作

(1)uboot中,通过tftp mem_addr kernel_file的方式去加载内核

(2)内核运行起来后,通过NFS去挂在rootfs

(3)正常加载rootfs后,就可以像普通的Linux开发一样,通过串口,输入命令操作Linux了。

4. 优缺点

(1)优点:

免去了每次新编译的kernel和rootfs,都要重新烧写这一麻烦的事情。

(2)缺点:

A. 很明显,如果开发中,涉及到对应的网络驱动的调试等,内核的NFS服务的调试等,即本身所用到的网络功能都是要调试的对象,那就不能用此法了。

B. 另外,网络加载文件的速度,一般都是不错的,但是也不排除,有时候会受其他PC端某个网络资源占用太多的程序的影响。

C. 而网络加载文件的稳定性,不同的环境,差异很大。多数情况下,都是很稳定的,但是也有人遇到各种原因,导致不稳定的,所以此时此法即使可用,但用起来也会很郁闷。

3.1.2将kernel,rootfs,uboot等烧写到存储介质上的方式

需要将对应的文件,烧写到存储介质上,此时,有两种方法:

一种是一步到位的方式,即直接通过某工具将文件写入到存储介质上。

另外一种是两步到位的方式,先通过某种方式把文件下载到Uboot中,再通过Uboot中的命令,去把数据写入到存储介质上。

3.1.2.1一步到位:直接通过工具烧写文件到对应存储介质上

目前常见的存储介质,主要有Nor Flash和Nand Flash,所以下面主要讲解如何烧写Nor Flash还是Nand Flash。

另外,还有一些存储介质是SD/MMC卡等,其烧写数据,我用过的烧写数据方式是,一种是在Uboot中,把下载到内存中的数据,写入到SD/MMC卡中,或者在板子已经跑起来了Linux的环境下,把数据写入到SD/MMC卡中。

3.1.2.1.1Nor Flash

由于Nor Flash接口比较常见和通用,而且有专门的规范定义了对应的操作命令,所以,目前有很多工具,只要你板子上的Nor Flash是常见的Nor Flash,那么这些工具,多数都可以直接拿过来用,直接将文件烧写到Nor Flash中。

1. 目标

通过某些工具,连接上开发板或直接接上对应的硬件芯片Nor Flash,直接通过工具烧写文件到目标存储介质(即对应的硬件芯片)上。即不需要开发板上面运行Uboot或者Linux 系统。用工具直接操作即可。

2. 前提

(1)硬件:

A. 你所使用的Nor Flash,如果是那种通用的(其实大多数都是通用的),工具所支持的

B . 开发板具有对应的硬件接口,比如JTAG接口

C. 你自己有对应的硬件工具,比如JLink硬件

(2)软件:

A. 对应的软件工具支持对应的Nor Flash芯片,比如J-Flash,支持很多种常见Nor Flash的烧写

3. 如何操作

个人接触比较多的是,Jlink硬件 + 软件工具J-Flash ARM。其如何操作,参见:

使用破解版的JLink实现对开发板上的外部Nor Flash的烧写 + JLink V4.08k 下载地址https://www.sodocs.net/doc/c95199783.html,/serial_story/blog/item/e84d11ddbacf9ad08d10298b.html

3.1.2.1.2Nand Flash

由于Nand Flash没有一个统一的规范,和本身操作起来就比较复杂,所以,虽然存在一些工具,可以支持直接烧写Nand Flash,但是相对比较少,使用起来所要求的限制条件也比较多。

此外,是有专门的Nand Flash的烧录器的,一般叫做Nand Flash Programmer,直接将对应的文件,烧写到对应的Nand Flash上的,不过个人没怎么用过,不多解释。

3.1.2.2两步到位:先将数据先写入到Uboot中,再用uboot中的

命令把数据写到存储介质上

3.1.2.2.1如何把文件或数据下载到内存中

下表简单总结了,如何将数据通过硬件接口+相关软件,下载到Uboot中的方式:

图表 2 将文件下载到Uboot中的方式

下面,对每一种方式进行详细的阐述:

3.1.2.2.1.1U SB

关于USB Host和USB Device,上面已经名词解释过了,此处不再赘述。

现在很多开发板上,都有USB的Host和USB的Device的接口。所以,对应着,可以实现,外接U盘到开发板上,或者将开发板作为U盘连到PC上,然后操作U盘,把文件拷贝到U盘里,实现对应的把文件数据传输到开发板上这一功能。

3.1.2.2.1.1.1USB Host = USB Mass Storage = U Disk

1. 目标

把插在开发板上的U盘中的文件,拷贝Uboot的内存中

2. 前提

(1)硬件:

A. 开发板上有USB Host芯片和接口

以我这里的TQ2440的板子为例,用的CPU是三星的S3C2440,其中包含了一个OHCI的USB Host主控制器。

板子上也有USB Host接口。

B. 自己有U盘

(2)软件:

A. Uboot中已经实现了USB Host Controller的驱动

如果Uboot中没有你的板子上的USB Host Controller的驱动的话,需要自己移植,甚至从头实现的话,这个工作量和难度,还是不小的。

以此处的S3C2440的驱动为例,此处已经把新的版本的Uboot中的相关代码,移植到了TQ2440的1.1.6的uboot中,实现了对应的S3C2440的OHCI的驱动。

相关过程和源码,参考:

【记录】在TQ2440的uboot中添加SD/MMC支持 + 添加USB Mass Storage支持

https://www.sodocs.net/doc/c95199783.html,/thread-3577777-1-3.html

B. U盘的文件系统是FAT格式的

大部分U盘已经是FAT格式的了。

如果你的U盘是NTFS等其他格式,那么要重新格式化为FAT16/FAT32格式。

当然,如果是其他的文件系统,比如ext2等,也是可以的,下面对应的命令就是

ext2ls 和 ext2load 了。

3. 如何操作

在Uboot中使用对应命令来操作U盘:

(1)usb rescan

去初始化usb host。关于usb 子系统更多的相关的命令,可以通过

help usb

看到更多的帮助信息。

(2)fatls usb 0

将你U盘的FAT文件系统中的文件列出来,以确保USB现在可以正常工作,和知道你当前U盘里面有哪些文件,此时应该可以看到你所要拷贝的文件,如果你是把文件放在根目录的话。(一般都是把u-boot.bin等文件,放到U盘根目录的)

(3)fatload usb 0 mem_addr file_name

去将U盘中的文件file_name载入到内存中mem_addr的位置。

3.1.2.2.1.1.2USB Slave = USB Device

1. 目标

将PC端的文件,通过USB线,传输到作为USB Device端的开发板上的Uboot的内存中

2. 前提

(1)硬件:

A. 板子上有对应的USB Device功能的controller和对应的USB Device接口

(2)软件:

A. PC端已经安装了对应的USB相关驱动

B. PC端需要有对应的DNW软件

C. Uboot中实现了对应的命令

以TQ2440为例,其中已经有了usb slave 相关功能和命令

3. 如何操作

具体的操作,相对比较麻烦,此处只列出主要步骤:

(1)去Uboot端执行对应的usb slave命令

以等待PC主机端传输文件

(2)去PC端用DNW去传输文件

USB Port -> Transmit -> 选择要传输的文件

然后对应的文件就可以传输到对应的Uboot中的内存中去了。

更多的细节,如何操作,请参看TQ2440的手册:

TQ2440开发板使用手册

https://www.sodocs.net/doc/c95199783.html,/files/TQ2440开发板使用手册V2.5_20100611.rar

在此,免费为天嵌的TQ2440宣传一句,其资料和相关文档,做的是蛮不错的,东西很全,很详细,尤其适合初学者。

3.1.2.2.1.2R S232

RS232的连接方式,是最常见的。

即,开发板上有串口接口,然后接了根RS232线,连到PC端,然后PC端用一个串口终端程序,连接开发板,比如常见的Windows XP系统自带的超级终端Hyper Terminal,功能强大的SecureCRT,以及Putty等等,都是不错的串口工具。

3.1.2.2.1.2.1Kermit

Kermit是一种协议,广泛使用的协议,用来传输文件和数据的协议,很早之前就有了此协议,所以现在很多地方都已实现和支持此协议。

关于Kermit和Ymodem的详情,去看我转的帖子:

【转】xmodem与kermit协议

https://www.sodocs.net/doc/c95199783.html,/blog/static/172799491201172341552827/

1. 目标

通过Kermit协议,将文件通过RS232接口传送到Uboot的内存中

2. 前提

(1)硬件:

A. 开发板中有RS232接口,并且已连接到PC端

(2)软件:

A. Uboot中已经实现kermit协议的loadb命令

这个,一般的uboot中都已实现。

此处说一个诡异的事情,之前遇到过,即使help中没有看到loadb的命令,但是实际也是支持loadb的,估计是uboot开发者,把此命令注释掉了,但是实际kermit协议用途太广泛,而uboot本身程序中早已经实现了,所以loadb还是已经在uboot中的了。

3. 如何操作

(1)在uboot中,输入loadb

(2)在PC端使用串口程序去传送文件

以windows XP下的串口工具超级终端为例:

选择Transfer -> Send File -> Protocol选择Kermit,FileName选择你所要传送的文件->点击

确定即可。然后就是慢慢传送文件了。

至于文件数据传输后,放在uboot的内存中的哪个位置,是由你uboot中的环境变量loadaddr决定,我这里的是loadaddr=0x800000。

当然,你也可以在执行loady的时候,后面加上你要的地址,比如

loadb 0x1000000

Kermit协议,数据传输速度比较慢,我这里传输了个8MB的文件,大概要40分钟左右的。

3.1.2.2.1.2.2Ymodem

关于Ymodem协议,是从之前的Xmodem协议演化出来的,之后还有Zmodem。

简单的说就是,一个数据包大小为1KB的数据传输协议。

更多的解释,参见上面已经提到的:

【转】xmodem与kermit协议

https://www.sodocs.net/doc/c95199783.html,/blog/static/172799491201172341552827/

1. 目标

通过Ymodem协议,将文件通过RS232接口传送到Uboot的内存中

2. 前提

(1)硬件:

A. 开发板中有RS232接口,并且已连接到PC端

(2)软件:

A. Uboot中已经实现Ymodem协议的loady命令

3. 如何操作

(1)在uboot中,输入loady

(2)在PC端使用串口程序去传送文件

以windows XP下的串口工具超级终端为例:

选择Transfer -> Send File -> Protocol选择Ymodem,FileName选择你所要传送的文件->点击确定即可。然后就是慢慢传送文件了。

3.1.2.2.1.3N IC/network

多数开发板上,也都带有网卡接口,然后通过网线,连接到一个路由或者交换机上,另外一个PC也连接到此路由或交换机上,然后通过网线,将PC上的文件数据,传输到板子上。

3.1.2.2.1.3.1tftp

1. 目标:

将文件通过tftp方式,从PC端,下载到Uboot的内存中

2. 前提

(1)硬件:

A. 硬件板子上有网卡

B. 板子通过网线连到路由或交换机上,PC也连到该路由或交换机上,共处同一个网段(2)软件:

A. PC端设置好tftp服务

关于PC端安装了tftp服务(TFTP service),详情可以参考:

【已成功】Ubuntu 10.10下安装TFTP的步骤 tftp-hpa版本

https://www.sodocs.net/doc/c95199783.html,/blog/static/17279949120113423314652/

B. 安装好tftp服务后,把对应的u-boot.bin等文件,放到tftp的根目录下。

C. Uboot中,首先肯定是已经实现了网卡驱动,以及添加了对应的tftp命令。

此两个前提,一般开发板都已经具有此条件。

3. 如何操作

在Uboot中,执行命令:

tftp mem_addr file_name

就可以将文件file_name传送到Uboot的内存地址mem_addr中了。

3.1.2.2.1.3.2NFS

1. 目标

将文件通过NFS命令,从PC端,通过网络,传送到Uboot的内存中去

2. 前提

(1)硬件:

A. 硬件板子上有网卡

B. 板子通过网线连到路由或交换机上,PC也连到该路由或交换机上,共处同一个网段(2)软件:

A. PC端设置好NFS服务

B. Uboot中实现了网卡驱动和nfs命令

C. Uboot中设置好了ip地址,ip掩码mask,网管gateway

3. 如何操作

Uboot中执行:

nfs mem_addr IP:path/file

3.1.2.2.1.4S D/MMC

1. 目标

将文件从SD/MMC卡中,拷贝到Uboot的内存中

2. 前提

(1)硬件:

A. 开发板有SD/MMC的controller,有对应的SD/MMC插槽

B. 自己有SD或MMC卡

(2)软件:

A. Uboot中实现了对应的SD/MMC驱动及对应的命令

关于uboot中,把新版本的mmc驱动,移植到旧的上,可以参考:

【记录】将Uboot 2011.06中mmc驱动移植到uboot 1.1.6的过程

https://www.sodocs.net/doc/c95199783.html,/thread-3582107-1-3.html

B. SD/MMC卡是FAT文件系统

当然,如果是其他的文件系统,比如ext2等,也是可以的,下面对应的命令就是ext2ls 和 ext2load 了。

3. 如何操作

(1)mmcinit或mmc rescan

即初始化mmc,旧版本的uboot的是mmcinit,新版本的uboot是mmc rescan (2)fatls mmc 0

将mmc卡中的文件列出来,确保mmc卡工作正常和知道里面有哪些文件(3)fatload mmc 0 mem_addr file_name

将mmc卡中的file_name文件拷贝到内存mem_addr处。

上述md(memory display)命令,只是为了显示内存中的内容,用以表示,拷贝文件前后内存中数据的变化。

3.1.2.2.1.5J TAG == debug tool

1. 目标

在开发板运行程序的情况下,比如Uboot中,通过debug工具,将文件下载到Uboot的内存中

2. 前提

(1)硬件:

A. 开发板上有JTAG等debug接口,连接上对应的Jlink等硬件

(2)软件:

A. 对应的debug 工具支持载入文件到内存的功能

一般debug工具,都是IDE集成开发环境,对应的IDE里面会有对应的功能。

比如ARM的RVDS,里面就有对应的load file到memory的功能。

3. 如何操作

在IDE工具中,找到对应的功能选项,然后把文件load载入到开发板的内存中,即可。

3.1.2.2.2如何把内存中的数据,写入到对应存储设备上

前面的操作,是把数据从外部传输到Uboot的内存中,接下来,就要把对应的数据,写入到对应的存储介质中去。

常见的存储介质以及Uboot中相关的命令,分类如下:

图表 3如何把Uboot的内存中数据写入到存储设备上

下面分别介绍,在Uboot中,对于每种存储设备,如何用相关的命令,把数据写入到对应存储设备中。

3.1.2.2.2.1N and Flash

1. 目标

把Uboot中内存中数据,写入到Nand Flash中去

2. 前提

(1)软件:

A. Uboot中,已经实现了nand erase和nand write命令了。

3. 操作步骤

(1)nand erase

需要先用nand的erase命令,去擦出对应的区域

(2)nand write

然后再用nand write,把内存中的数据,写入到nand 中。

3.1.2.2.2.2N or Flash

关于Nor Flash,需要额外说明一些事情。

本身Flash这个名词,在存储领域方面,包括了Nand Flash和Nor Flash。

而由于Nor Flash出现最早,应用很广泛,所以Uboot中,对于单独说Flash这个词,是指的是Nor Flash。

所以,会有对应的命令:

flinfo = Flash Info = Nor Flash Info

而又由于Nor Flash的很多操作,很像SDRAM等设备,可以直接读,(写操作需要特定的命令),但是可以把Nor Flash的操作,兼容统一到cp拷贝这个命令中去。

所以,很多时候,你会发现,好像没有单独的Nor Flash的读写的命令,其实是包含在了cp这个命令中了。

另外,对于cp命令本身,其有三种方式:

cp.b单位为b=byte=字节的方式,去拷贝数据

cp.w单位为w=word=字的方式,去拷贝数据

cp.l单位为l=long=长整型的方式,去拷贝数据

不过,对于eeprom,也有单独的一套eeprom的命令的,比如eeprom write,用于将数据写入到eeprom中去。

1. 目标

把Uboot中内存中数据,写入到Nor Flash中去

2. 前提

(1)软件:

A. Uboot中,已经实现了Nor flash 相关的命令了,包括erase和cp命令支持了Nor Flash 了。

3. 操作步骤

在Uboot中,执行下列命令:

(1)protect off

只有在你当前需要重新写入新数据的Nor Flash的Block是已经被写保护的情况下,才需要此步骤去解除锁定。

一般情况下,都不需要此步骤的。

(2)erase

去擦出Nor Flash中的数据

(3)cp或eeprom write

将内存中的数据,写入到Nor Flash中。

3.1.2.2.2.3U SB

1. 目标

将Uboot中的内存中的数据,写入到USB设备中。

2. 前提

(1)Uboot中已经实现了对应的usb write命令

3. 操作步骤

在Uboot中,执行下列命令:

(1)usb write

将对应的内存中的数据,写入到Usb设备中。

3.1.2.2.2.4S D/MMC

1. 目标

将Uboot中的内存中的数据,写入到SD/MMC设备中。

2. 前提

(1)Uboot中已经实现了对应的mmc write命令

3. 操作步骤

在Uboot中,执行下列命令:

(1)mmc write

将对应的内存中的数据,写入到SD/MMC设备中。

3.2产品发布后:通过操作设备节点实现动态升级固件

除了开发过程中,去烧写固件之外,在发布产品后,很多厂商,希望在系统运行的情况下,实时地,可以去更新对应的固件,比如kernel的uImage或者rootfs等,此时,多数系统,往往是不太容易这样去升级的,不过还是有可能实现这样的在线升级系统的。

基本的思路是,在运行的Linux中,通过操作对应的设备节点,比如:

(1)对于Nand Flash或者Nor Flash,通过MTD的工具,即mtd-util中的nandwrite等,

操作/dev/mtdN将新的固件写入进去;

具体实现方法,参见另外一篇文章:

嵌入式CPU分类

嵌入式CPU分类 马秉镇10021170 杨张先河10021173 薛祎凡10021174 徐鑫10021176 按功能分类: 一、嵌入式微处理器 嵌入式微处理器(Micro Processor Unit,MPU)是由通用计算机中的CPU演变而来的。它的特征是具有32位以上的处理器,具有较高的性能,当然其价格也相应较高。但与计算机处理器不同的是,在实际嵌入式应用中,只保留和嵌入式应用紧密相关的功能硬件,去除其他的冗余功能部分,这样就以最低的功耗和资源实现嵌入式应用的特殊要求。和工业控制计算机相比,嵌入式微处理器具有体积小、重量轻、成本低、可靠性高的优点。 目前主要的嵌入式处理器类型有Am186/88、386EX、SC-400、Power PC、68000、MIPS、ARM/ StrongARM系列等。 二、嵌入式微控制器 嵌入式微控制器(Microcontroller Unit, MCU)的典型代表是单片机,从70年代末单片机出现到今天,虽然已经经过了20多年的历史,但这种8位的电子器件目前在嵌入式设备中仍然有着极其广泛的应用。单片机芯片内部集成ROM/EPROM、RAM、总线、总线逻辑、定时/计数器、看门狗、I/O、串行口、脉宽调制输出、A/D、D/A、Flash RAM、EEPROM等各种必要功能和外设。和嵌入式微处理器相比,微控制器的最大特点是单片化,体积大大减小,从而使功耗和成本下降、可靠性提高。微控制器是目前嵌入式系统工业的主流。微控制器的片上外设资源一般比较丰富,适合于控制,因此称微控制器。 由于MCU低廉的价格,优良的功能,所以拥有的品种和数量最多,比较有代表性的包括8051、MCS-251、MCS-96/196/296、P51XA、C166/167、68K系列以及MCU 8XC930/931、C540、C541,并且有支持I2C、CAN-Bus、LCD及众多专用MCU和兼容系列。目前MCU占嵌入式系统约70%的市场份额。近来Atmel出产的Avr单片机由于其集成了FPGA等器件,所以具有很高的性价比,势必将推动单片机获得更高的发展。 三、嵌入式DSP处理器 嵌入式DSP处理器(Embedded Digital Signal Processor, EDSP),是专门用于信号处理方面的处理器,其在系统结构和指令算法方面进行了特殊设计,具有很高的编译效率和指令的执行速度。在数字滤波、FFT、谱分析等各种仪器上DSP获得了大规模的应用。 DSP的理论算法在70年代就已经出现,但是由于专门的DSP处理器还未出现,所以这种理论算法只能通过MPU等由分立元件实现。MPU较低的处理速度无法满足DSP的算法要求,其应用领域仅仅局限于一些尖端的高科技领域。随着大规模集成电路技术发展,1982年世界上诞生了首枚DSP芯片。其运算速度比MPU快了几十倍,在语音合成和编码解码器中得到了广泛应用。至80年代中期,随着CMOS技术的进步与发展,第二代基于CMOS工艺的DSP芯片应运而生,其存储容量和运算速度都得到成倍提高,成为语音处理、图像硬件处理技术的基础。到80年代后期,DSP的运算速度进一步提高,应用领域也从上述范围扩大到

JLINK V8固件烧录指导

J-LINK V8 固件烧录指导

1 J-LINK V8固件烧录指导 J-LINK 是使用过程中,如果内部固件意外损坏或丢失,请参考下面操作步骤说明,重新烧录JLINK 固件。 1.1 安装固件烧录软件 请ATMEL 官方网址下载AT91-ISP 下载软件。 软件下载地址:https://www.sodocs.net/doc/c95199783.html,/dyn/products/tools_card.asp?tool_id=3883 在打开的网页中,下载下图中红色框所示软件。 安装下载好的Install AT91-ISP v1.13.exe 软件 双击Install AT91-ISP v1.13.exe 运行,选择默认设置,安装好以后,桌面上生成如下两个图标。

1.2 擦除芯片并进入编程模式 打开JLINK 外壳,见到JLINK 内部电路如下图所示。 使用USB 线连接JLINK 与PC 机,以提供JLINK 工作电源。 短接图中A 的两个过孔约5秒。断开A 位置的两个过孔的短接。然后拔掉JLINK 与P C 间的USB 线(注意先后顺序,原理:短路A 实际是擦除芯片里面的所有程序)。 短接图中,B 处的两个过孔。 使用USB 线连接JLINK 与PC 机,至少超过10秒后,拔掉USB 线,停止给JLINK 供电 (说明:请确保此过程中,图中B 处一直处于可靠的端接状态)。 (原理:短路B 超过10秒钟实际是使我们的ATMELSAM7S64芯片变成可以烧录程序的状态) 断开图中B 处的短接。 1.3 更新固件 双击桌面上的SAM-PROG v2.4图标 ,运行SAM-PROG v2.4烧录软件,按下图所示进 行设置。

嵌入式也多核 浅析ARM-Cortex_TM_A9MPCore_TM_多核处理器

嵌入式也多核 祝祺斌 (湖北工业大学湖北武汉 430068) 摘 要: Cortex-A9 MPCore拥有比普通单核Cortex-A9处理器更为先进的电源管理功能,在提高性能的同时能够进一步降低功耗,达到甚至超过市场和应用对性能和功耗日益增长的要求。 关键词:嵌入式;ARM;Cortex-A9;MPCore;多核 中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2010)0920178-01 在提倡效率优先的当今社会,人们对各类移动终端的性能的要求在不要的工作。对此Cortex-A9 MPCore通过加速器一致性端口的设计,可以利断的提高,用以实现更多的媒体服务、更快的数据速率以及更多其他新功用这个端口与其它装置共享高速缓存的内容,并支持所有标准的读/写动能。然而,消费者的需求是促进此类应用产品开发的最主要动力。因此如作,无需外加另外的一致性功能电路,因此能够在不增加功耗的情况下,何降低终端产品成本,提高终端产品性能成了制造商面临的最大挑战。提升其多核效能。 在应用领域,既要求低成本又要求高性能的例子占据了绝大多数,例Cortex-A9 MPCore多核处理器采用了通过硅验证的ARMMPCore技术的如:笔记本电脑、智能手机、PDA、手持GPS、便携式游戏机以及车载信息增强版包括引入了侦测控制单元、通用中断控制器以及加速器链接埠。通娱乐终端等等,不胜枚举。人们不但希望便携式产品功能强大,同时也要过这些技术的应用,Cortex-A9 MPCore便可轻松实现可扩展型的多核处求电池使用时间足够长。因此,能够全天候使用已经成为人们对移动电子理。举个通用中断控制器的例子:该控制器是采用了最新标准化的中断控设备的最低要求。为达到这一要求,便携式产品生产厂商们必须着眼于如制器,为处理器之间的通信及系统中断的路由选择及优先级的确定提供了何在降低产品功耗同时提升产品性能以及增加产品的功能。一种灵活而丰富的解决办法。该中断控制器通过软件的控制,最多可达到在各类嵌入式应用对效能需求持续增加的情况下,作为“大脑”的嵌支持224个独立中断,可在整个CPU中对各个中断进行分配,确定其硬件优入式处理器也“无奈”走上了多核之路。众所周知,采用多核处理器架构先级并在操作系统与信任区软件管理层之间进行路由。这种路由灵活性加的处理器不但能够解决峰值性能的要求,而且能够大大降低功耗。多核设上对中断虚拟进入操作系统的支持,是进一步提升基于半虚拟化管理器解备不仅性能强大可扩展性高,而且功耗低,还为能够为设计者提供极大的决方案功能的关键因素之一。更令人惊讶的是,Cortex-A9 MPCore具有先灵活性及便利性。而ARM公司的Cortex-A9多核处理器,除了最高可达到进的微架构,其微架构的设计不但着眼于为了解决超高频设计的效率低下8000DMIPS的效能之外,还同时兼具了低功耗的特点,使得新一代的移动运问题,而且把目标定为在不增加嵌入式设备的硅成本的前提下最大限度地算装置在较低能耗之下也能获得极好的性能。提升处理效率。通过综合技术,这种处理器设计能够轻松使设备的时钟频Cortex-A9处理器是ARM公司在已经投产的商用嵌入式处理器系列中性率超过1GHz,而且提供了较高的功效水平,满足了长时间电池供电工作的能最优秀的一款产品。该款处理器不仅采用了被广泛支持的ARMv7架构,还要求。简而言之,Cortex-A9 MPCore拥有比普通单核Cortex-A9处理器更为是基于最先进的推测型八级流水线所设计的。单就处理器架构来看,改良先进的电源管理功能,在提高性能的同时能够进一步降低功耗,达到甚至了的超纯量管线设计利用一个动态调整长度的八阶超纯量,以及具有乱序超过了市场和应用对性能和功耗日益增长的要求。 执行预测能力的同步多工管线,使其每个周期可执行四个指令,频率超过由于Cortex-A9 MPCore是首款能提供总计超过8,000DMIPS效能的可合1GHz。这些改进不仅仅能够降低成本,更能够解决主流八阶处理器的效率成ARM处理器,不仅能支持各种要求严苛的高效能消费性与企业应用,同时问题。因此,这款处理器的性能、功效和功能均达到了前所未有的水平,能在功耗预算仅为250mW的移动平台内,大幅超越市面上绝大部分手持式装能够满足绝大部分消费、网络、企业和移动应用等各种领域中尖端产品的置的性能。采用台积电的65nm原生制程的Cortex-A9 MPCore可提供超过要求。虽然Cortex-A9系列嵌入式处理器也具有传统的单核选项,但 2.0DMIPS/MHz的效能,同时核心逻辑成本占用不到1.5mm2面积的硅组件。Cortex-A9系列嵌入式处理器的最大的亮点也是本文最为重点介绍的就是该目前,包括NVIDIA、Samsung、TI、及NVIDIA等知名国际公司都已宣布采用系列旗下可扩展的Cortex-A9 MPCore多核处理器。此新一代的处理器方案。综上,我们可以毫不犹豫的相信Cortex-A9 简单回顾一下历史:ARM公司的第一代的多核嵌入式处理器是在MPCore势必将会成为一代经典嵌入式处理器的代表。 2004年发布的ARM11 MPCore,该款处理器一经面世就获得了广泛的市场好通过对MPCore技术的进一步扩展和优化以及Cortex-A9 MPCore多核处评。以ARM11 MPCore技术为基础,经过了一系列的改良和开发,Cortex-A9 理器的研究为许多全新应用市场提供了下一代的MPCore技术。此外,为简MPCore嵌入式处理器问世了。相对于ARM11 MPCore,Cortex-A9 MPCore的化和扩大对多核解决方案的使用,Cortex-A9 MPCore处理器还支持与加速性能获得了极大的提升,而其功耗相对也有了明显的降低。Cortex-A9 器和DMA的系统级相关性,进一步提高了性能,并降低了系统级功耗。可以MPCore多核处理器是以集成缓存一致的方式支持1至4个CPU内核,可单独配毫不夸张的说是ARM11 MPCore敲开了嵌入式芯片多核化的大门,而Cortex-置其任意的处理器,设定其缓存大小及是否支持MPE、PTM或FPU接口等。最A9 MPCore是将广阔无垠的嵌入式多核的康庄大道完完整整的展现在世人面令人惊叹的是Cortex-A9 MPCore还集成了一种符合GIC架构的综合中断及通前。正是由于Cortex-A9 MPCore的成功为我们指明了嵌入式处理器前进和信系统,该系统配有专用外设,使其性能和软件可移植性都更上一层楼。发展的方向。与各式各样的通用CPU一样,嵌入式处理器的发展方向应该也众所周知,多核处理器如何维持各核心中高速缓存的一致性是一项极其重是低功耗、高性能、多核化。

几款经典的嵌入式系统方案推荐

几款经典的嵌入式系统方案推荐 在日益信息化的现代社会中,计算机和网络的应用已经全面渗透到日常生活中,各种应用嵌入式系统的电子产品也随处可见,计算机的应用经过桌面PC系统的空前之后,嵌入式系统的应用正风起云涌,广泛进入到工业、军事、通信、环保、电力、铁路、金融等众多领域。作为两大类型计算机之一的专用计算机系统、即嵌入式系统在应用数量上已经远远超过传统的通用计算机系统,嵌入式微控制器技术的出现给现代工业控制领域带来了一次新的技术革命。 嵌入式微控制器组成的系统可嵌入到任何需要控制的设备中,并且在工控领域的应用已经越来越广泛。嵌入式系统按形态可分为设备级(工控机)、板级(单板、模块)、芯片级(MCU、SoC)。当前使用的单片机与工控机是一种典型的嵌入式系统应用。随着Internet的飞速发展,对各种工控设备的网络功能要求也越来越高。大量的智能设备将通过网络相互传递信息和数据,实现智能化现场设备的功能自治性、系统结构的高度分散性以及监管控一体化。在嵌入式系统的市场竞争愈加激烈的今天,如何快速地将符合需求的产品投入市场并在竞争中保持一席之地?成为众多嵌入式研发制造企业所面临的共同课题。所以必须通过加快设计流程来提高设计质量,而目前大多企业普遍采取的解决方案是利用现成的商业化平台。嵌入式设备在开发过程中,除了必须考虑它的处理器架构、操作系统性能、以及其他组件之外,开发人员还必须了解一些例如:系统的哪些部分需要设计、哪些部分需要购买现成设备等等。一般自行设计的方案,它的优势是可以全面地自定义最终的解决方案并优化成本,但是任何设计规格的更改或疏忽都会使成本高昂,且周期漫长。相反,使用商业现成的平台将增加产品的销售成本,或者可能会浪费一些不必要的成本,但是通常来说,现成的系统提供了更快的验证周期,因而也就具有更为快捷的设计流程,从而在更短的上市时间内保证设计的质量。下文我们就将用于开发嵌入式系统的两种方案----自行设计或使用现成平台进行对比阐述,并且讨论与这两种方案相关的技术和经济风险。 方案一:自行设计开发之前,需要为系统的核心控制部分选择一种处理器技术,目前研祥采用以下五种技术:1. 微控制器-微控制器的成本极为低廉,并且通常在单一的芯片上提

嵌入式操作系统核原理开发(消息队列)

嵌入式操作系统内核原理和开发(消息队列) 消息队列是线程交互的一种方法,任务可以通过消息队列来实现数据的沟通和交换。在嵌入 式系统上,这可以说这是用的最多的一种方法。通过消息队列,无论是发送者,还是接受者 都可以循环地处理各种消息。而我们知道,存储消息最好的方式就是循环队列,如果消息已 满,那么发送者可以把自己pend到等待队列上;而如果此时没有消息,那么接受者也可以 把自己pend到等待队列上。当然实现消息队列的方法很多,甚至用户可以自己利用互斥量 和信号量来实现,而嵌入式系统常常会默认提供这样的功能函数,我想主要的目的还是为了 方便用户,让他们可以更多地从业务的角度来看问题,而不是把重点关注在这些底层的细节 上面。 首先,我们还是看看rawos上面关于消息队列的数据结构是怎么定义的, 1typedef struct RAW_MSG_Q { 2 3 RAW_VOID **queue_start; /* Pointer to start of queue data */ 4 RAW_VOID **queue_end; /* Pointer to end of queue data */ 5 RAW_VOID **write; /* Pointer to where next message will be inserted in the Q */ 6 RAW_VOID **read; /* Pointer to where next message will be extracted from the Q */ 7 RAW_U32 size; /* Size of queue (maximum number of entries) */ 8 RAW_U32 current_numbers; /* Current number of entries in the queue */ 9 RAW_U16 blocked_send_task_numbers; /*number of blocked send task numbers */ 10 RAW_U16 blocked_receive_task_numbers; /*number of blocked send task numbers */ 11 12 } RAW_MSG_Q; 13 14typedef struct RAW_QUEUE 15 { 16 RAW_COMMON_BLOCK_OBJECT common_block_obj; 17 RAW_MSG_Q msg_q; 18 19 } RAW_QUEUE; 上面的代码中有两段数据结构,第一段主要表示循环队列的内容,其中包括了队列首地

嵌入式智能家居系统

嵌入式智能家居系统设计 摘要:“智能家居”(smart home),又称智能住宅,它利用先进的计算机技术、 嵌入式系统技术、网络通讯技术和传感器技术等,将家中的各种设备(照明系统、环境控制系统、安防系统、智能家电等)有机的连接到一起。智能家居让 用户采用更方便的手段来管理家庭设备,比如,通过无线遥控器、电话、互联 网或者语音识别控制家用设备,根据场景设定设备动作,使多个设备形成联 动。智能家居内的各种设备相互间可以通讯,不需要用户指挥也能根据不同的 状态互动运行,从而在最大程度上给用户提供高效、便利、舒适与安全的居住 环境和工作环境。本文通过对智能家居系统的分析,确定了总体架构设计。针 对智能家居系统的特点和所要实现的基本功能,分析了智能家居控制器的基本 结构,对控制器的核心电路进行了详细设计。 关键词:嵌入式智能微控制器 1、研究背景 智能化家居的发展分为三个层次: 首先是家庭电子化(HE,Home Electronics)。这个时期主要是面对单独电器的阶段,电子设备之间并没有很大的联系,如电视机刚出来的那些时期。 其次是住宅自动化(HA,home Automation)。该时期是面向功能的阶段,部 分电器设备具有了一些简单的网络连接功能,主要是为了实现某个单一的功 能,比如单一的自动抄表系统。最后是家居智能化,美国称其为Wise House,欧洲称为Smart Home。智能住宅是面向系统设计的,系统通过家庭分布总线(HDS,Home Distribution System)把住宅内各种与信息相关的通讯设备,家用电器和家庭保安装置都并入到网络节点中进行集中的和异地的监视控 制和家庭事务处理,并保持这些家庭设施与住宅环境的协调,提供工作、学习、娱乐等各项服务,营造出具有多功能的信息化居住空间。 智能家居控制系统提供安全、舒适的居住环境,确保人身和财产安全;空 调系统调节温度、湿度、检测空气成份,提高空气质量;系统调节音响和色 彩,使人们心情舒畅;合理利用阳光和大气冷热量来调节室内环境,减少能 耗,能按事先设定的程序,区分各种时段,对室内的环境及设备进行控制,并 提供现代化的通信手段和信息服务。 从设计思想和技术角度分析,当前国内的智能家居控制系统有两个研究方向:一是基于非PC平台的智能家居系统;二是基于PC平台的智能家居系 统。总体来说,国内智能家居产品的研发从上世纪九十年代后期才起步,起步

ARM嵌入式在通信领域的应用分析

ARM嵌入式在通信领域的应用分析 ARM嵌入式在通信领域的应用分析 前言 由于网络与通信技术的发展,嵌入式系统在经历了近20年的发展历程后,又进入了一 个新的历史发展阶段,即从普遍的低端应用进入到一个高、低端并行发展,并且不断提升低 端应用技术水平的时代,其标志是近年来32位MCU的发展。 32位MCU的应用不会走8位机百花齐放、百余种型号系列齐上阵的道路。这是因为在8位机的低端应用中,嵌入对象与对象专业领域十分广泛而复杂;而当前32位MCU的高端应用则多集中在网络、通信、多媒体技术领域。32位MCU将会集中在少数厂家发展的少数型号系列上。 在嵌入式系统高端应用的发展中,曾经有众多的厂家参与,很早就有许多8位嵌入式 MCU厂家实施了8位、16位和32位机的发展计划。后来,8位和32位机的技术扩展,侵占了16位机的发展空间。传统电子系统智能化对8位机的需求,使这些厂家把主要精力放在8位机的发展上,形成了32位机的发展迟迟不前的局面。当网络、通信和多媒体信息家电业兴起后,出现了嵌入式系统高端应用的市场;而在嵌入式系统的高端应用中,进行多年技术准备的ARM公司,适时地推出了32位ARM系列嵌入式微处理器,以其明显的性能优势和知识产权平台扇出的运行方式,迅速形成32位机高端应用的主流地位,以至于使不少传统嵌入式系统厂家放弃了自己的32位发展计划,转而使用ARM内核来发展自己的32位MCU。就连在嵌入式系统发展史上做出卓越贡献的Intel公司,以及将单片微型计算机发展到微控制器的Philips公司,在发展32位嵌入式系统时,都不另起炉灶,而是转而使用ARM公司的嵌入式系统内核来发展自己的32位MCU。 本文在以下几个方面对ARM嵌入式在通信领域的应用进行分析, 1对ARM进行介绍

一种嵌入式DSP核的设计及FPGA验证_图文(精)

第38卷第2期 2008年4月 微电子学 Microelect ronics Vol 138, No. 2Apr 1 2008 一种嵌入式DSP 核的设计及FPGA 验证 李辉, 李平 (电子科技大学电子薄膜与集成器件国家重点实验室, 成都610054 摘要:设计了一个4级流水线的16位定点DSP 核。该DSP 核支持151条指令指令需要两个机器周期外, Cy 2clo ne EP1C12Q240C8FP GA 器件实现, 可工作在集成开发环境QUAR YU S II 和FP GA , 结果表明, 该DSP 核能。关键词:; FP ; IMA ADPCM 中图分类号:文献标识码: A 文章编号:100423365(2008 022*******

Design and FPGA V erif ication of an Embedded DSP Core L I Hui , L I Ping (S tate Key L aboratory of Elect ronic T hin Fil ms and I ntegrated Devices , Univ. of Elec. Sci. & Technol. of China , Cheng du 610054, P. R. China A 162bit fixed 2point DSP core with 4pipeline stages is proposed. The instruction set of the DSP con 2Abstract : tains 138instructions , and all instructions take only one machine cycle except RET instruction , where 2cycles are necessary. The DSP core prototype was realized using Altera ’s EP1C12Q240C8FP GA with operation f requency of 18. 6M Hz. Based on QUAR TUS II software and FP GA board , the prototype was verified , which indicated that all instructions executed correctly and the codec f unction of IMA ADPCM was also realized as expected. K ey w ords :DSP core ; FP GA ; RAW dependence ; IMA ADPCM EEACC : 1265F 计、指令集、FP GA 验证及结论。 1引言 2系统设计 DSP 已经广泛地应用到数字信号处理领域, 它

基于嵌入式的智能家居

基于嵌入式的智能家居 摘要 21世纪是智能的时代,是互联网的时代,随着Internet后PC 时代的到来,这个时代的主要特征是以计算机作为作为组成成分融入消费品之中。依赖于嵌入式技术的后PC时代使得传统IT设备逐渐过渡到嵌入式设备并融入到生活的各个方面。本系统采用嵌入式技术,将在系统内移植嵌入式web服务器,用户可以通过互联网对家居进行操作与监控。 关键词嵌入式智能家居Linux 远程监测 Abstract In the 21st century is the era of intelligence, is the age of the Internet, with the advent of Internet post-pc era, the era as computers as the main characteristics of the components into consumer goods. Rely on the embedded technology after traditional PC era makes IT equipment gradually transition to the embedded devices and integrated into all aspects of life. This system adopts the embedded technology, transplanted in the system of embedded web server, the user can through the Internet for household operation and monitoring. Keyword: ARM smart home Linux Remote monitoring 1 绪论 随着生活水平与生活质量的提高,人们对于生活水平要求日益提高,对于生活的便捷性与对信息需求的及时性也越发看重,以嵌入式为核心的智能家居以其便捷性与实时性逐渐走入了我们的视野。目前随着

嵌入式Linux系统集成

嵌入式Linux系统集成

?嵌入式Linux常用文件系统?配置MTD ?配置测试文件系统 ?配置单机启动

CramFS文件系统?CramFS 设计简单而且小,适用于在半导体ROM和CD上存储文件系统,使用CramFS,文件系统通常限制在16M以下,最大的文件系统则略大于256M。 ?CramFS是只读文件系统,因此不象其他文件系统,必须由本身内容创建。一旦创建了文件系统影像,就可以写到FLASH/ROM中,然后挂接。 ?目前在所有的MVL PE体系结构上都支持CramFS,可以和其他文件系统结合使用。

EXT2和EXT3文件系统?EXT2是一种很常用的文件系统(也许最常见)。EXT2是开发应用于Linux,在块设备(例如硬盘和CD-ROM驱动器上)工作,EXT2支持大于4T字节大小,文件名长度达到255个字节。EXT3是EXT文件系统最新的版本。EXT3的两个大的改进是:支持遵循POSIX规则的访问控制列表(ACL);当文件系统挂接时自动恢复日志。 ?所有的MVL PE体系结构都支持EXT2。EXT3还处于试验阶段,但是在所有的MVL PE体系结构都可以使用。

FLASH日志文件系统?JFFS日志FLASH文件系统是由瑞典的Axis Communication公司开发的。 ?JFFS2是JFFS 的下一个版本,功能更加完善,还处于试验阶段。 ?对于JFFS 和JFFS2 ,FLASH 最小也必须大于2 倍erase_sector_size空间用于垃圾回收,大约15%。

JFFS文件系统 ?直接在FLASH上提供文件系统,而不是仿真块设备。 ?专为FLASH-ROM芯片设计,识别FLASH-ROM芯片的特殊写要求。 ?通过磨损平衡延长FLASH的寿命。 ?总是把FLASH目录结构保存在RAM中。 ?实现日志结构的文件系统,即使系统遇到崩溃或者不正常断电,总是保持一致,不需要在启动时fsck。

嵌入式与多核技术

《嵌入式与多核技术》 课程设计报告 题目:LED驱动的移植 班级:通信本二 学号:13405039 姓名:周文敏 同组人员:爽、义龙、叶盛、郭恒 指导教师: 年月日

摘要 目前,LED(Light Emitting Diode)的应用技术已经非常成熟,与LED相关的产品也走进了人们的日常生活中。在LED的使用早期,其主要用于指示,如交通信号灯和仪表的指示灯,但是在当前,基于嵌入式的LED驱动移植显示屏和LED装饰灯已经非常的普遍,故LED的应用已经进入到了一个新的领域。因此,针对不同应用的LED驱动也应运而生,一款功能丰富且操作简单实用LED驱动对LED控制器的推广尤为重要。在本课题中采用了ARM+Linux的嵌入式开发模式,控制器中使用的处理器是基于ARM920T核的S3C2440芯片,并以Linux 2.6.30的操作系统作为软件平台。详细的分析了DMX512舞台灯光控制协议,最终,设计和完成了本文的嵌入式LED控制系统。本文首先从应用层、操作系统层和硬件层三个层面对嵌入式Linux系统的结构进行的简要的分析。其次,对本课题中使用的DMX512控制协议进行了详细的分析,然后设计了基于DMX512协议的LED控制器的系统框架,并给出了控制器各功能模块的功能定义。其中将控制器系统划分成了六个模块单元:LED灯串部分、手动控制部分、LCD状态显示部分、SD卡数据读写部分、PC端在线调试部分和控制器软件部分。最后,分别对各功能模块涉及到的硬件电路和设备驱动进行了详细分析和实现,并结合各功能模块的实现完成LED控制器软件系统的整体设计。在控制器的各个功能模块设计过程中,采用了模块化的设计方式,根据模块的功能定义,设计了模块的输入和输出接口,并结合控制器选用 的硬件平台,具体的实现了模块的部结构。控制器的软件部分在系统的应用层实现,根据控制器的处理过程进行了详细的划分,并采用了多线程的编程模式,完成 了控制器的软件处理流程。同时,在应用层的程序开发屏蔽了底层硬件的实现细节,使系统具有较好的兼容性与扩展性

嵌入式也多核

龙源期刊网 https://www.sodocs.net/doc/c95199783.html, 嵌入式也多核 作者:祝祺斌 来源:《硅谷》2010年第18期 摘要:Cortex—A9 MPCore拥有比普通单核Cortex—A9kh器更为先进的电源管理功 能,在提高性能的同时能够进一步降低功耗,达到甚至超过市场和应用对性能和功耗日益增长的要求。 关键词:嵌入式;ARM;Cortex—A9:MPCore;多核 中图分类号:TP3文献标识码:A文章编号:1671-7597(2010)09201-78-01 在提倡效率优先的当今社会,人们对各类移动终端的性能的要求在不断的提高,用以实现更多的媒体服务、更快的数据速率以及更多其他新功能。然而,消费者的需求是促进此类应用产品开发的最主要动力。因此如何降低终端产品成本,提高终端产品性能成了制造商面临的最大挑战。 在应用领域,既要求低成本又要求高性能的例子占据了绝大多数,例如:笔记本电脑、智能手机、PDA、手持GPS、便携式游戏机以及车载信息娱乐终端等等,不胜枚举。人们不但希望便携式产品功能强大,同时也要求电池使用时间足够长。因此,能够全天候使用已经成为人们对移动电子设备的品低要求。为达到这一要求,便携式产品生产厂商们必须着眼于如何在降低产品功耗同时提升产品性能以及增加产品的功能。 在各类嵌入式应用对效能需求持续增加的情况下,作为“大脑”的嵌入式处理器也“无奈”走上了多核之路。众所周知,采用多核处理器架构的处理器不但能够解决峰值性能的要求,而且能够大大降低功耗。多核设备不仅性能强大可扩展性高,而且功耗低,还为能够为设计者提供极大的灵活性及便利性。而ARM公司的Cortex-A9多核处理器,除了最高可达到8000DMIPS 的效能之外,还同时兼具了低功耗的特点,使得新一代的移动运算装置在较低能耗之下也能获得极好的性能。 Cortex A9处理器是ARM公司在已经投产的商用嵌入式处理器系列中性能最优秀的一款产品。该款处理器不仅采用了被广泛支持的ARMy7架构,还是基于最先进的推测型八级流水线所设计的。单就处理器架构来看,改良了的超纯量管线设计利用一个动态调整长度的八阶超纯量,以及具有乱序执行预测能力的同步多工管线,使其每个周期可执行四个指令,频率超过 1GHz。这些改进不仅仅能够降低成本,更能够解决主流八阶处理器的效率问题。因此,这款处理器的性能、功效和功能均达到了前所未有的水平,能够满足绝大部分消费、网络、企业和移动应用等各种领域中尖端产品的要求。虽然Cortex A9系列嵌入式处理器也具有传统的单核

基于嵌入式的智能家居系统设计与实现

基于嵌入式的智能家居系统设计与实现 摘要:伴随着人们工作节奏的加快和工作环境的不确定性,人们越来越注重居住环境的安全,希望能在第一时间知道家中的安全情况,因此,设计一种智能家居远程控制系统具有良好的实际意义。本文浅析基于嵌入式的智能家居系统设计与实现。 关键词:嵌入式;智能家居;远程控制] 引言 电子技术、智能控制技术以及物联网技术的融合,使得传统住宅家居体系已经无法满足居住要求,对于智能化以及安全性的要求逐渐提升。虽然当前视频监控已经逐渐被重视,但在具体操作中相对复杂。这种状况的产生,使得对嵌人式智能家居系统的研究热度逐渐上升,成为引领远程控制的重要方式。目前,大多数嵌入式系统都以处理器为核心,与一些检测、监控设备配合实现一定的功能,但是由于视频图像传输的影响以及监控界面的问题,客户端的远程监控效果并不理想。如果嵌入式智能家居系统能够连接到Internet 和GPRS模块,则用户可以通过远程登录界面来了解家居环境信息。因此,本文提出了一款具有网络功能的智能家居控制系统的实现方案,使用火狐浏览器作为上位机,采用JPEG

高效压缩算法对视频图像进行压缩,用户不仅可以通过浏览器监测家居环境信息,还可以访问Web服务器中的视频,同时,GPRS通信模块还能将异常信息以短信方式通知用户,提高了智能家居控制的灵活性。 1嵌入式智能家居系统总体设计 基于智能家居制品监控的角度分析,主要需要借助当前计算机技术,设计并构成智能家居子系统,将各个技术融合之后实现统一管理。站在智能家居系统的角度,主要包括视频服务、客户端、服务端等部分。硬件设计。此次设计采用TX2440A开发板进行设计,将S3C2440处理器作为主控制芯片,主频已经能够达到400MHz,具有单独的管理单元、控制器以及存储器等。LCD显示部分包括3.5英寸真彩色液晶屏,具备USB接口。在开发板方面具备多种结构,便于对系统的调试与测试需求;视频采集模块运用ZC301摄像头,可实现Linux提供摄像头视频数据的采集;包括DS18B20 室内温度的传感器;GPRS通信模块。至此,用户端通过移动终端,向监控中心发送请求,监控中心在接受请求之后进行处理并进行解析,将现场监控终端发送操作指令,现场终端提交反馈,得出操作结果。 2系统架构 2.1硬件设计 2.1.1嵌入式微处理器

嵌入式ARM多核处理器并行化方法

嵌入式ARM多核处理器并行化方法 目前,嵌入式多核处理器已经在嵌入式设备领域得到广泛运用,但嵌人式系统软件开发技术还停留在传统单核模式,并没有充分发挥多核处理器的性能。程序并行化优化目前在PC平台上有一定运用,但在嵌入式平台上还很少,另外,嵌入式多核处理器与PC平台多核处理器有很大不同,因此不能直接将PC平台的并行化优化方法应用到嵌人式平台。本文分别从任务并行和缓存优化两方面进行并行化优化的研究,探索在嵌人式多核处理器上对程序进行并行化优化的方法。 1 嵌入式多核处理器结构 嵌人式多核处理器的结构包括同构(Symmetric)和异构(Asymmetric)两种。同构是指内部核的结构是相同的,这种结构目前广泛应用在PC多核处理器;而异构是指内部核的结构是不同的,这种结构常常在嵌入式领域使用,常见的是通用嵌入式处理器+DSP核。本文探究的嵌入式多核处理器采用同构结构,实现同一段代码在不同处理器上的并行执行。 图1 ARM SMP处理器结构 在目前嵌入式领域中,使用最为广泛的为ARM 处理器,因此以ARM 双核处理器OMAP4430作为研究对象。ARM 对称多处理(Symmetric MulTI-Processing,SMP)结构如图1所示,根据程序的局部性原理,每一个处理器都具有私有的内存(Local Memory),常见的是一级缓存(L1Cache)。然而,多个处理器之间又涉及到相互通信问题,因此在常见的ARM 处理器中使用二级缓存(L2 Cache)来解决这一问题。基于对称多处理器结构,所有的处理器(通常为2的倍数)在硬件结构上都是相同的,在使用系统资源上也是平等的。更重要的是,由于所有的处理器都有权利去访问相同的内存空间,在共享内存区域中,任何一个进程或者线程都可以运行在任意一个处理器之上,这样就使得程序的并行化成为可能。2在嵌入式多核平台上进行并行化优化,需要考虑以下问题: ①并行化程序的性能取决于程序中串行化部分,程序性能不会随着并行线程数目的提升

一个典型的嵌入式系统设计和实现

关键字:嵌入式系统设计ARM FPGA多功能车辆总线Multifunction Vehicle Bus 在计算机、互联网和通信技术高速发展的同时,嵌入式系统开发技术也取得迅速发展,嵌入式技术应用范围的急剧扩大。本文介绍了一种基于ARM和FPGA,从软件到硬件完全自主开发多功能车辆总线(Multifunction Vehicle Bus)MVB??B 嵌入式系统的设计和实现。 系统设计和实现 通常来说,一个嵌入式系统的开发过程如下: 1.确定嵌入式系统的需求; 2.设计系统的体系结构:选择处理器和相关外部设备,操作系统,开发平台 以及软硬件的分割和总体系统集成; 3.详细的软硬件设计和RTL代码、软件代码开发; 4.软硬件的联调和集成; 5.系统的测试。 一、步骤1:确定系统的需求: 嵌入式系统的典型特征是面向用户、面向产品、面向应用的,市场应用是嵌入式系统开发的导向和前提。一个嵌入式系统的设计取决于系统的需求。 1、MVB总线简介 列车通信网(Train Communication Network,简称TCN)是一个集整列列车内部测控任务和信息处理任务于一体的列车数据通讯的IEC国际标准(IEC- 61375-1), 它包括两种总线类型绞线式列车总线(WTB)和多功能车厢总线(MVB)。 TCN在列车控制系统中的地位相当与CAN总线在汽车电子中的地位。多功能车辆总线MVB是用于在列车上设备之间传送和交换数据的标准通信介质。附加在总线上的设备可能在功能、大小、性能上互不相同,但是它们都和 MVB总线相连,通过MVB总线来交换信息,形成一个完整的通信网络。在MVB系统中,根据IEC -61375-1列车通信网标准, MVB总线有如下的一些特点: 拓扑结构:MVB总线的结构遵循OSI模式,吸取了ISO的标准。支持最多4095个设备,由一个中心总线管理器控制。简单的传感器和智能站共存于同一总线上。 数据类型:MVB总线支持三种数据类型: a.过程数据:过程变量表示列车的状态,如速度、电机电流、操作员的命令。过程变量的值叫过程数据。它们的传输时间是确定的和有界的。为保证这一延迟时间,这些数据被周期性地传送。

网络模块wifi固件烧录

1.硬件连接焊接串口排针 采购的模块,没有焊接串口,需手工焊接。规格xh2.0-2p (图片为样品测试。仅供参考) 接上天线,接入网口转接板 插USB口供电或模块端子供电

Wifi连接 使用笔记本电脑,或主机装有wifi模块(驱动自行安装),在wifi列表中可以看到如下Router-Module_B67AFA的wifi。点击连接。 升级uboot TFTP配置 打开TFTP,IP选择上面查到的IP(如上图是:192.168.1.118 将固件包放置在桌面,选择目录:C:\Users\Administrator\Desktop\7688-8MB-64MB 点Show Dir 可以看到文件列表如下,点击Close,关闭文件列表 传输uboot及固件 打开PuTTY,根据下图方框设置参数

输入帐号:admin后空格,再在Password中输入密码:admin(不显示为正常) 按空格,出现如下界面 按顺序复制下面命令,回到putty界面,右键粘贴命令,回车,传输uboot文件: cd /tmp ls tftp -g -r uboot-7688-64mb-v1.0.7.bin 192.168.16.100 ls

复制下面命令,在putty界面右键粘贴下面命令,回车,升级uboot,:mtd_write write uboot-7688-64mb-v1.0.7.bin Bootloader 按顺序复制下面命令,回到putty界面,右键粘贴命令,回车, tftp -g -r firmware.bin 192.168.16.100 mtd_write write firmware.bin Kernel

嵌入式系统在智能机器人中的应用

嵌入式系统在智能机器人中的应用 吉祥利 (中南大学信息科学与工程学院电子信息工程湖南长沙 410075) 摘要(abstract):简要介绍嵌入式系统的概念,技术特点.重点阐述嵌入式系统在机器人控制中的应用.以嵌入式智能足球机器人为例,利用模块化和可扩展的思想设计和分析了硬件系统和软件系统.嵌入式智能机器人平台具有硬件体积小、模块化、易扩展、功耗低,软件实时性强、可定制、可靠性高等优点,其具有广泛的应用前景. 关键词(key words):嵌入式系统,智能机器人,Windows CE.NET,人机交互. 1引言(Introduction) 随着科学技术的进步,机器人得到了快速的发展,促进了机器人被广泛的应用到各行各业中.但目前机器人的智能水平并不高,仍处于初级阶段,智能机器人研究面临俩个核心问题:一是提高机器的自主性,即希望机器进一步独立于人,具有更为友善的人一机界面;二是提高机器的适应性,即就机器与环境的关系而言,希望加强它们之间的交互关系[1]. 为促进当前智能机器人研究和应用,迫切需要开发“具有开放式结构的、模块化、标准化的嵌入式智能机器人平台”.这种智能机器人平台具有硬件体积小、模块化、易扩展、功耗低,软件实时性强、可定制、可靠性高等优点,可以广泛地应用于自主式移动机器人上,将有着广泛的应用前景[2]. 2 嵌入式系统简介(Embedded Intelligent Robot introduction) 一般来说,嵌入式系统是执行专用功能并被内部计算机控制的设备或者系 统0,即嵌入到对象体系中的专用计算机系统0,嵌入性0,专用性0与计算机系统0是嵌入式系统的三个基本要素.它主要完成信号控制的功能,体积小,结构紧凑,可作为一个部件埋藏于所控制的装置中,它提供用户接口、管理有关信息的输入输出、监控设备工作,使设备及应用系统有较高智能和性价比.嵌入式系统由嵌入式硬件与嵌入式软件组成,硬件以芯片、模板、组件、控制器形式埋藏于设备内部,软件是实时多任务操作系统和各种专用软件,一般固化在ROM或闪存中。嵌入

相关主题