CN107402751A - 一种基于Linux系统NAND FLASH母片烧录镜像实现方法 - Google Patents
一种基于Linux系统NAND FLASH母片烧录镜像实现方法 Download PDFInfo
- Publication number
- CN107402751A CN107402751A CN201710370230.0A CN201710370230A CN107402751A CN 107402751 A CN107402751 A CN 107402751A CN 201710370230 A CN201710370230 A CN 201710370230A CN 107402751 A CN107402751 A CN 107402751A
- Authority
- CN
- China
- Prior art keywords
- nand flash
- mirror image
- subregion
- writable
- linux
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明属于无源光网络技术领域,公开了一种基于Linux系统NAND FLASH母片烧录镜像实现方法,基于嵌入式Linux系统软件开发工具包SDK,采用Lnux C编程语言和Makefile;包括以下步骤:在Bootloader空间建立分区表给物理硬件NAND FLASH识别,并在Linux内核驱动实现MTD分区表;实现管理各分区的功能;实现生成每个分区数据镜像的utility(软件工具);实现算法添加各分区镜像ECC码,并实现核心算法生成可烧录分区模式的两个必要文件:分区表文件和要烧录到NAND FLASH的数据内容文件;在Makefile调用上述用C语言算法实现的各个utility,以便CPE软件开发自动化生成可烧录NAND FLASH镜像。本发明提供一种在Windows操作系统生成可烧录分区模式镜像提供了Linux操作系统的相应的实现方法。
Description
技术领域
本发明涉及无源光网络技术领域,特别涉及一种基于Linux系统NAND FLASH母片烧录镜像实现方法。
背景技术
在无源光网络中,PON系统由局端光线路终端(OLT:Optical Network Unit)、光配线网络(ODN:Optical Distribution Network)和用户端光网络单元(OUN:OpticalNetwork Unit)组成了网络拓扑;业务经由局端OLT管理多个注册的ONU到OLT的上行通信。本案ONU(物理硬件和镜像)通过PON上联口与OLT连接形成一个主从结构,OLT同时上联到网管系统和业务系统(包括宽带业务、语音业务和IPTV业务平台),通过网管的北向功能(Northbound Interface)来实现在OLT中添加ONU的命令,打通业务通道,再通过ITMS下发指定的业务到相应的PON ONU终端,北向和ITMS的下发功能是通过中国电信的资源平台来提供工单实现;而路由器端可下接电话,IPTV,PC机实现语音和宽带业务。
目前在CPE(或ONU)嵌入式设备中,普遍应用NAND FLASH存储固件或镜像;因为NAND FLASH的编程速度快、擦除时间短;还有NAND FLASH容量大、价格低;而在其软件开发中,经常要实现合并多个NAND FLASH分区文件并生成烧录分区表文件和烧录数据文件的算法;然后烧录分区表文件和烧录数据镜像通过特定烧录器(或编程器)烧写到CPE的NANDFLASH中,然后CPE才能正常开机运行我们的开发软件。
现有技术中,现有烧录器(或编程器)厂商提供的Windows操作系统界面软件工具生成烧录镜像方法繁琐和操作困难,同时,工厂作业员手工操作Windows界面软件工具易产生错误;由于大部分工厂批量烧录采用跳过坏块(Skip bad block)方法烧录,这样导致了时有部分NAND FLASH子片烧录文件的起始物理地址发生偏移了。
发明内容
本发明提供一种基于Linux系统NAND FLASH母片烧录镜像实现方法,解决现有技术中烧录器(或编程器)厂商提供的Windows操作系统界面软件工具生成烧录镜像方法繁琐和操作困难,人工操作易产生误差,跳过坏块模式批量烧录易产生子片数据丢失或不完整的技术问题。
为解决上述技术问题,本发明提供了一种基于Linux系统NAND FLASH母片烧录镜像实现方法,基于嵌入式Linux系统软件开发工具包SDK,采用Lnux C编程语言和Makefile;包括以下步骤:
在Bootloader空间建立分区表给物理硬件NAND FLASH识别,并在Linux内核驱动实现MTD分区表;
实现管理各分区的功能;
实现生成每个分区数据镜像的utility(软件工具);
实现算法添加各分区镜像ECC码,并实现核心算法生成可烧录分区模式的两个必要文件:分区表文件和要烧录到NAND FLASH的数据内容文件;
在Makefile调用上述用C语言算法实现的各个utility,以便CPE软件开发自动化生成可烧录NAND FLASH镜像。
本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
本申请实施例中提供的基于Linux系统NAND FLASH母片烧录镜像实现方法,为在Windows操作系统生成可烧录分区模式镜像提供了Linux操作系统的相应的实现方法,方便在Linux环境下CPE软件开发过程自动化生成NAND FLASH可烧录分区模式的镜像;快捷生成带双镜像的多个分区NAND FLASH母片镜像的方法,减少人为手动操作引起的误差;针对现有NAND FLASH母片镜像大部分使用跳过坏块(Skip bad block)模式批量烧录,采用NANDFLASH母片镜像适合分区模式(Partition)批量烧录,确保整片NAND FLASH数据完整,避免子片数据丢失或不完整问题的发生。
附图说明
图1为本发明实施例提供的硬拷贝(Hard Copy)示意图;
图2为本发明实施例提供的跳过坏块(Skip bad block)示意图;
图3为本发明实施例提供的分区模式(Partition)示意图。
具体实施方式
本申请实施例通过提供一种基于Linux系统NAND FLASH母片烧录镜像实现方法,解决现有技术中烧录器(或编程器)厂商提供的Windows操作系统界面软件工具生成烧录镜像方法繁琐和操作困难,人工操作易产生误差,跳过坏块模式批量烧录易产生子片数据丢失或不完整的技术问题。
为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细说明,应当理解本发明实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互组合。
参见图1、图2和图3,一种基于Linux系统NAND FLASH母片烧录镜像实现方法,基于嵌入式Linux系统软件开发工具包SDK,采用Lnux C编程语言和Makefile;包括以下步骤:
在Bootloader空间建立分区表给物理硬件NAND FLASH识别,并在Linux内核驱动实现MTD分区表;
实现管理各分区的功能;
实现生成每个分区数据镜像的utility(软件工具);
实现算法添加各分区镜像ECC码,并实现核心算法生成可烧录分区模式的两个必要文件:分区表文件和要烧录到NAND FLASH的数据内容文件;
在Makefile调用上述用C语言算法实现的各个utility,以便CPE软件开发自动化生成可烧录NAND FLASH镜像。
下面具体说明。
NAND FLASH分区表详细情况、每个分区的起始块和结束块偏移如下:
生成“分区表文件”和“镜像数据文件”工具(Linux C语言算法),用法:Usage:./mkpartdata<outfile><start blk in hex><end blk in hex><inputfile>;
举例说明:假设nand flash中有6个有效分区
在编译脚本或Makefile中可以这么用:
程序执行完后,将在$(BUILD_PATH)目录下产生:XXX.data(镜像数据文件)和XXX.partition(分区表文件)。
填充OOB区域ECC工具详情:
(1).将单个二进制或bin文件生成带ECC码的文件,用法:./fillecc4cpexxx.bin,将生成xxx.bin.ecc文件;
(2).源码中的ECC算法函数static void GetNandXXXEcc(const byte*dataIn,byte*ecc_code);
(3).参数说明:
dataIn:输入512bytes的数据;
ecc_code:输出512bytes的ecc码(一般为16个字节中某几个字节);
详细解释ECC算法:
(1).NAND FLASH是:ESMT FM6AD2G1GA,从它的datasheet可以得知:
擦除操作的基本单位是块block,读写操作的基本单位是页page;它们之间的运算关系是:
1Block=(2K+64)Bytes*64page:2K按照512bytes平分4个扇区(sector):A,B,C,D;后面的64bytes是OOB区,按照16bytes平分4个区:E,F,G,H,对应存放A,B,C,D数据区的ECC码;
1Page=(2K+64)Bytes
(2).对于SoC中NAND Controller硬ECC一般支持单位是512bytes数据,对应有16bytes字节用来存放校验产生的ECC码;NAND Controller硬ECC算出来的ECC码可能3个字节或4字节或其他小于16字节,而且存放在16bytes起始偏移有讲究,具体依赖NANDController规定。
下面结合具体的描述说明本方案。
对于本发明做进一步详细描述:CPE软件SDK里NAND FLASH驱动代码建立分区表(包含每个分区的偏移地址和大小),实现管理各分区(擦、读和写分区)算法,实现生成每个分区单镜像的utility,实现NAND FLASH每页(page)OOB区域添加ECC码算法,实现生成可烧录的分区模式镜像文件(Partition_Table.bin和Data_Merge.bin)的utility;以下是本发明NAND FLASH烧录镜像实现方法的正文部分按Linux环境的Makefile编译顺序进行描述:
1、NAND FLASH驱动代码建立分区表
(1)说明
本功能包括两部分:Bootloader空间和Linux内核空间;
Step1:Linux C语言实现Bootloader启动初始化阶段,按照每个分区的偏移地址和大小建立分区表。
Step2:实现Linux内核MTD驱动初始化阶段,按照每个分区名、偏移地址、大小和管理功能。其代码节选如下:
2、实现管理各分区(擦、读和写分区)算法
说明
本功能是通过普通Linux驱动的IOCTL实现擦除、读和写分区的算法,以便向应用程序提供API。
3、实现生成每个分区单镜像的utility
说明
本utility首先调用mkfs.jffs2或mkfs.ubifs格式化分区文件,然后生成每个分区大小的镜像文件(格式化后的分区文件和剩余空间填充0xFF)。
Step1:jffs2格式文件用工具mkfs.jffs2生成,ubifs格式文件
用工具mkfs.ubifs生成;
Step2:先生成每个分区大小的镜像文件:格式化后的分区文件和剩余空间用0xFF填充。
4、实现NAND FLASH每页(page)OOB区域添加ECC码算法
说明
本功能主要通过海明码算法为NAND FLASH每页OOB区域填充ECC码。
Step1:首先通过Linux C语言读取未带ECC码的镜像到缓冲区,然后用海明码(Hamming Code)算法算出每页的ECC码,并填充到该页的OOB区域。
其代码节选如下:
5、实现生成可烧录的分区模式镜像文件(Partition_Table.bin和Data_Merge.bin)的utility
说明
本uility主要是实现各分区带ECC镜像文件合并以及可烧录的分区镜像分区表二进制文件,最终提供给工厂母片批量烧录;其算法代码如下:
本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
本申请实施例中提供的基于Linux系统NAND FLASH母片烧录镜像实现方法,为在Windows操作系统生成可烧录分区模式镜像提供了Linux操作系统的相应的实现方法,方便在Linux环境下CPE软件开发过程自动化生成NAND FLASH可烧录分区模式的镜像;快捷生成带双镜像的多个分区NAND FLASH母片镜像的方法,减少人为手动操作引起的误差;针对现有NAND FLASH母片镜像大部分使用跳过坏块(Skip bad block)模式批量烧录,采用NANDFLASH母片镜像适合分区模式(Partition)批量烧录,确保整片NAND FLASH数据完整,避免子片数据丢失或不完整问题的发生。
最后所应说明的是,以上具体实施方式仅用以说明本发明的技术方案而非限制,尽管参照实例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。
Claims (1)
1.一种基于Linux系统NAND FLASH母片烧录镜像实现方法,其特征在于,基于嵌入式Linux系统软件开发工具包SDK,采用Lnux C编程语言和Makefile;包括以下步骤:
在Bootloader空间建立分区表给物理硬件NAND FLASH识别,并在Linux内核驱动实现MTD分区表;
实现管理各分区的功能;
实现生成每个分区数据镜像的utility(软件工具);
实现算法添加各分区镜像ECC码,并实现核心算法生成可烧录分区模式的两个必要文件:分区表文件和要烧录到NAND FLASH的数据内容文件;
在Makefile调用上述用C语言算法实现的各个utility,以便CPE软件开发自动化生成可烧录NAND FLASH镜像。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710370230.0A CN107402751A (zh) | 2017-05-23 | 2017-05-23 | 一种基于Linux系统NAND FLASH母片烧录镜像实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710370230.0A CN107402751A (zh) | 2017-05-23 | 2017-05-23 | 一种基于Linux系统NAND FLASH母片烧录镜像实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107402751A true CN107402751A (zh) | 2017-11-28 |
Family
ID=60404393
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710370230.0A Pending CN107402751A (zh) | 2017-05-23 | 2017-05-23 | 一种基于Linux系统NAND FLASH母片烧录镜像实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107402751A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111666082A (zh) * | 2020-06-05 | 2020-09-15 | 北京元心科技有限公司 | 一种基于linux操作系统的外设固件加载方法、控制设备及计算机可读存储介质 |
CN114327509A (zh) * | 2021-12-23 | 2022-04-12 | 保定飞凌嵌入式技术有限公司 | 一种适用于imx6系列核心板nand的批量烧录方法 |
CN114913807A (zh) * | 2021-01-29 | 2022-08-16 | 东莞市欧思科光电科技有限公司 | Led驱动芯片、写址装置、led显示装置及写址方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101271427A (zh) * | 2007-03-19 | 2008-09-24 | 株式会社东芝 | 内容数据存储装置及其控制方法 |
CN101436143A (zh) * | 2008-12-05 | 2009-05-20 | 四川长虹电器股份有限公司 | Ip机顶盒的图形标志显示方法 |
CN102722516A (zh) * | 2012-01-17 | 2012-10-10 | 晨星软件研发(深圳)有限公司 | 一种针对NAND Flash烧录文件的生成方法及相应的装置 |
CN103095826A (zh) * | 2013-01-10 | 2013-05-08 | 上海斐讯数据通信技术有限公司 | 一种网关设备升级保护的方法 |
CN103593216A (zh) * | 2013-11-12 | 2014-02-19 | 上海斐讯数据通信技术有限公司 | 将ubi格式的系统文件制作成工厂烧录映像文件方法 |
CN103744694A (zh) * | 2013-12-24 | 2014-04-23 | 武汉烽火众智数字技术有限责任公司 | 基于Nand闪存的动态分区搜索装置及其方法 |
CN104317622A (zh) * | 2014-10-30 | 2015-01-28 | 深圳市捷顺科技实业股份有限公司 | 一种嵌入式设备程序烧录处理方法和系统 |
CN104679507A (zh) * | 2015-02-05 | 2015-06-03 | 四川长虹电器股份有限公司 | NAND Flash编程器烧录映像文件的生成方法及装置 |
-
2017
- 2017-05-23 CN CN201710370230.0A patent/CN107402751A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101271427A (zh) * | 2007-03-19 | 2008-09-24 | 株式会社东芝 | 内容数据存储装置及其控制方法 |
CN101436143A (zh) * | 2008-12-05 | 2009-05-20 | 四川长虹电器股份有限公司 | Ip机顶盒的图形标志显示方法 |
CN102722516A (zh) * | 2012-01-17 | 2012-10-10 | 晨星软件研发(深圳)有限公司 | 一种针对NAND Flash烧录文件的生成方法及相应的装置 |
CN103095826A (zh) * | 2013-01-10 | 2013-05-08 | 上海斐讯数据通信技术有限公司 | 一种网关设备升级保护的方法 |
CN103593216A (zh) * | 2013-11-12 | 2014-02-19 | 上海斐讯数据通信技术有限公司 | 将ubi格式的系统文件制作成工厂烧录映像文件方法 |
CN103744694A (zh) * | 2013-12-24 | 2014-04-23 | 武汉烽火众智数字技术有限责任公司 | 基于Nand闪存的动态分区搜索装置及其方法 |
CN104317622A (zh) * | 2014-10-30 | 2015-01-28 | 深圳市捷顺科技实业股份有限公司 | 一种嵌入式设备程序烧录处理方法和系统 |
CN104679507A (zh) * | 2015-02-05 | 2015-06-03 | 四川长虹电器股份有限公司 | NAND Flash编程器烧录映像文件的生成方法及装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111666082A (zh) * | 2020-06-05 | 2020-09-15 | 北京元心科技有限公司 | 一种基于linux操作系统的外设固件加载方法、控制设备及计算机可读存储介质 |
CN114913807A (zh) * | 2021-01-29 | 2022-08-16 | 东莞市欧思科光电科技有限公司 | Led驱动芯片、写址装置、led显示装置及写址方法 |
CN114913807B (zh) * | 2021-01-29 | 2024-01-09 | 东莞市欧思科光电科技有限公司 | Led驱动芯片、写址装置、led显示装置及写址方法 |
CN114327509A (zh) * | 2021-12-23 | 2022-04-12 | 保定飞凌嵌入式技术有限公司 | 一种适用于imx6系列核心板nand的批量烧录方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106649771B (zh) | 数据库的数据模型更新方法和系统 | |
CN103955363B (zh) | 一种程序升级安装包的制作方法 | |
CN105045663B (zh) | 快速部署虚拟机的方法与系统 | |
CN107506219A (zh) | 一种基于Android系统的通用版本升级方法 | |
CN107402751A (zh) | 一种基于Linux系统NAND FLASH母片烧录镜像实现方法 | |
CN102819442B (zh) | 一种嵌入式设备程序烧写的方法及系统 | |
CN112558980A (zh) | 多软件包管理方法及装置 | |
CN107632828A (zh) | 多dts文件支持方法、编译装置及嵌入式设备 | |
CN101163050A (zh) | 设备近端维护方法、系统和设备 | |
WO2016078263A1 (zh) | 升级控制设备、终端、终端升级方法及系统、存储介质 | |
CN111158697B (zh) | 一种烧录镜像制作方法 | |
CN101127051A (zh) | 一种文档同步方法及系统 | |
CN104657164A (zh) | 软件升级处理方法和装置 | |
CN111294413A (zh) | 一种互联网协议ip地址的确定方法、装置和可读介质 | |
CN111176665B (zh) | 大容量emmc镜像制作方法和装置 | |
CN106569802A (zh) | 防火墙iso安装镜像的制作方法及装置 | |
CN104572140B (zh) | 一种操作系统移植的方法、装置及系统 | |
CN105320540A (zh) | 一种安卓应用的批量安装方法及系统 | |
CN113515344B (zh) | 跨技术平台的虚拟机自动迁移方法及装置 | |
CN104516759A (zh) | 一种集成镜像文件生成方法、测试方法和装置 | |
CN106843956B (zh) | 系统固件包的生成方法及装置 | |
US20150134944A1 (en) | Data terminal running mode switching method, device, and data terminal | |
CN112506539A (zh) | 一种固件更新方法、装置及电子设备和存储介质 | |
CN105677418A (zh) | 在接入设备中实现多个不同语音协议的方法及系统 | |
CN110427199A (zh) | 一种bmc和bios配套升级的方法、设备及可读介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 314400 Room 201, building 2, No. 306, Gushui Road, Haining Economic Development Zone, Haining City, Jiaxing City, Zhejiang Province Applicant after: BOWEI TECHNOLOGY Co.,Ltd. Address before: 307, room 2, building 522, 314006 Asia Pacific Road, Nanhu District, Zhejiang, Jiaxing Applicant before: BOWEI TECHNOLOGY Co.,Ltd. |
|
CB02 | Change of applicant information | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20171128 |
|
RJ01 | Rejection of invention patent application after publication |