这个主题主要说的就是固件文件的读写,它为我们提供了一个把用户文件读入内核的机制。
前面的实例代码在实际的一些驱动中可能很少见到,但这一节所说的东西就比较实用了。
首先说一下固件文件。
Ldd3:
作为一个驱动作者, 你可能发现你面对一个设备必须在它能支持工作前下载固
件到它里面. 硬件市场的许多地方的竞争是如此得强烈, 以至于甚至一点用作
设备控制固件的 EEPROM 的成本制造商都不愿意花费. 因此固件发布在随硬件
一起的一张 CD 上,并且操作系统负责传送固件到设备自身.
这里的意思是固件文件是为了节省成本,当然我觉得固件文件也将底了升级难度。
固件文件的格式:
有很多种——trx\usr\bin等
固件文件存储会因为CPU的不同,数据存储的方式分为Big—endian和 Little—endian
我们看bin
bin是C1~20子公司Linksys公司无线路由器固件文件所采用的格式。文件有60字节头部,前32字节是Linksys公司无线路由器固件文件bin格式特有的头部,后28字节是t r x格式文件头部。
Bin有两个头,
先看前32位
struct bin_header
{
uint32_t product_abbreviation; //存放固件的产品型号缩写
uint32_t reserved1[1];