CN110308953A - 基于32位mcu主控的rom代码函数修改方法 - Google Patents

基于32位mcu主控的rom代码函数修改方法 Download PDF

Info

Publication number
CN110308953A
CN110308953A CN201910256006.8A CN201910256006A CN110308953A CN 110308953 A CN110308953 A CN 110308953A CN 201910256006 A CN201910256006 A CN 201910256006A CN 110308953 A CN110308953 A CN 110308953A
Authority
CN
China
Prior art keywords
function
area
rom
code
ram
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
Application number
CN201910256006.8A
Other languages
English (en)
Inventor
李虎
梁永权
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Demingli Electronics Co Ltd
Original Assignee
Shenzhen Demingli Electronics Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Demingli Electronics Co Ltd filed Critical Shenzhen Demingli Electronics Co Ltd
Priority to CN201910256006.8A priority Critical patent/CN110308953A/zh
Publication of CN110308953A publication Critical patent/CN110308953A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种基于32位MCU主控的ROM代码函数修改方法,在RAM区中开辟一个专用于存放与ROM区中运行代码函数相对应的扩展代码函数的函数指针偏移地址的存储空间;当所述ROM区中相应的运行代码函数需要被替换时,根据对应的扩展代码函数的函数指针偏移地址跳转到RAM中执行,执行完毕之后跳回ROM区中继续执行其他的运行代码函数。本发明的基于32位MCU主控的ROM代码函数修改方法,可以让存储主控的运行代码存放在ROM区中执行,需要修改的部分代码在RAM区中运行,达到减少需要的RAM区空间,减少芯片的面积和降低芯片成本。进一步使用只记录扩展函数地址偏移的方式,可以减少由于记录扩展函数地址导致的RAM开销,进一步减少RAM面积,降低芯片成本。

Description

基于32位MCU主控的ROM代码函数修改方法
技术领域
本发明涉及一种基于32位MCU主控的ROM代码函数修改方法。
背景技术
移动存储产品U盘、SD卡等都是由主控芯片和NAND FLASH组成。主控芯片通过固化在ROM中的Boot loader(引导加载)代码把存储在NAND FLASH中的运行代码(算法管理代码)加载到RAM中,然后运行代码在RAM区中执行。
由于移动存储产品要求速度越来越快,NAND FLASH更新频繁,导致管理算法日益复杂,存储芯片中的RAM区空间要求越来越大,使得主控芯片成本越来越高。在芯片设计中相同容量的ROM区和RAM区面积对比,ROM的价格只有RAM的三分之一。而在存储主控当中,RAM区往往需要占到整个芯片面积的将近一半,所以减少对RAM区容量的需求可以降低芯片成本。中国专利ZL200510025703公开了一种嵌入式系统中ROM代码的修改方法,该方案中,是将运行代码放在ROM区中执行,当需要修改时,通过函数列表跳转到RAM区中运行。这种方式中,函数列表会占用RAM区空间,导致RAM区空间增大。
发明内容
针对上述现有技术的不足,本发明所要解决的技术问题是:提供一种降低能够减少RAM空间、减少芯片面积的降低芯片成本的基于32位MCU主控的ROM代码函数修改方法。
为解决上述技术问题,本发明采用的一个技术方案是:提供一种基于32位MCU主控的ROM代码函数修改方法,在RAM区中开辟一个专用于存放与ROM区中运行代码函数相对应的扩展代码函数的函数指针偏移地址的存储空间;当所述ROM区中相应的运行代码函数需要被替换时,根据对应的扩展代码函数的函数指针偏移地址跳转到RAM中执行,执行完毕之后跳回ROM区中继续执行其他的运行代码函数。
进一步的,所述ROM区中的每一运行代码函数均设有与其一一对应的扩展代码函数的函数指针偏移地址。
进一步的,所述ROM区中部分运行代码函数设有与其一一对应的扩展代码函数的函数指针偏移地址。
进一步的,所述主控代码运行函数根据对应的扩展代码函数的函数指针偏移地址是否为0确定是否需要被替换,若为非0则表示所述主控代码函数需要被替换。
本发明基于32位MCU主控的ROM代码函数修改方法,将主控芯片全部运行代码放入ROM区中执行,通过在RAM区中开辟一个存储空间,专门用于存放扩展代码的函数指针偏移,当对应ROM区中的函数需要被替换,则根据扩展代码的函数指针偏移跳转到对应RAM区中执行,执行完毕后跳回到ROM中继续执行其他运行代码函数。采用这样的实施方式,可以让存储主控的运行代码存放在ROM区中执行,需要修改的部分代码在RAM区中运行,达到减少需要的RAM空间,减少芯片的面积和降低芯片成本。进一步使用只记录扩展函数地址偏移的方式,可以减少由于记录扩展函数地址导致的RAM开销,进一步减少RAM区面积,降低芯片成本。
附图说明
图1是基于32位MCU主控的ROM代码函数修改方法一实施例的示意图。
图2是基于32位MCU主控的ROM代码函数修改方法中主控芯片空间示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图1及图2,本实施例的基于32位MCU主控的ROM代码函数修改方法,包括在RAM区中开辟一个专用于存放与ROM区中运行代码函数相对应的扩展代码函数的函数指针偏移地址的存储空间;当所述ROM区中相应的运行代码函数需要被替换时,根据对应的扩展代码函数的函数指针偏移地址跳转到RAM中执行,执行完毕之后跳回ROM区中继续执行其他的运行代码函数。本实施例中,所述主控代码运行函数根据对应的扩展代码函数的函数指针偏移地址是否为0确定是否需要被替换,若为非0则表示所述主控代码函数需要被替换。
请继续参见图1,由于现在普遍使用的32位MCU主控在ROM区和RAM区地址上是统一编址的,一个函数指针的地址占用4Byte空间。由于存储主控RAM区空间通常不大(小于100KB),而RAM区空间的起始地址在芯片设计时就已经确定,所以记录扩展代码的函数指针不需要每个函数记录4Byte,只需要记录该函数指针相对于RAM起始的偏移即可,可以只使用2Byte记录。ROM区中运行代码函数可能会多达上千个,若每一个运行代码函数都需要预留一个扩展代码替换接口,如果每一个扩展函数接口记录由原来的4Byte改为2Byte,则可以减少一半的RAM开销。
本实施例中,将主控芯片全部运行代码放入ROM区中执行,通过在RAM区中开辟一存储空间,专门用于存放扩展代码的函数指针偏移,当对应ROM区中的函数需要被替换,则根据扩展代码的函数指针偏移跳转到对应RAM区中执行,执行完毕后跳回到ROM中继续执行其他运行代码函数。采用这样的实施方式,可以让存储主控的运行代码存放在ROM区中执行,需要修改的部分代码在RAM区中运行,达到减少需要的RAM空间,减少芯片的面积和降低芯片成本。进一步使用只记录扩展函数地址偏移的方式,可以减少由于记录扩展函数地址导致的RAM开销,进一步减少RAM区面积,降低芯片成本。
进一步作为优选的或可选的,所述ROM区中的每一运行代码函数均设有与其一一对应的扩展代码函数的函数指针偏移地址。该方案可以适用于RAM区空间较大的实施例中。
进一步作为优选的或可选的,所述ROM区中部分运行代码函数设有与其一一对应的扩展代码函数的函数指针偏移地址。该部分运行代码可以是指一些重要的和/或者经常需要修改的运行代码,这种方式可以适用于RAM区空间较小的实施例中,能够降低对RAM区空间的需要。
具体结合应用,请继续参见图2,ROM代码区有函数BOOT_Func0(),该函数实现功能是z=x+y,假设现在代码出现了异常,需要扩展替换该函数功能为z=x-y。函数扩展替换方法如下:
1.在RAM中实现函数Ext_Func0(),该函数实现功能z=x-y。
2.将函数Ext_Func0()的地址偏移赋值给EXT_Func[0]。
3.当函数BOOT_Func0()运行到RUN_EXTEND_FUN(EXT_Func[0])时,由于EXT_Func[0]不为0,则发现该函数被扩展替换。代码会跳转到(EXT_Func[0]+RAM_BASE_ADDR)处运行,即执行了函数Ext_Func0(),实现了功能z=x-y,然后BOOT_Func0()函数直接退出,不执行z=x+y。此处RAM_BASE_ADDR为实际RAM起始地址。使用本发明的基于32位MCU主控的ROM代码函数修改方法,可以让存储主控的运行代码存放在ROM区中执行,需要修改的部分代码在RAM区中运行,达到减少需要的RAM区空间,减少芯片的面积和降低芯片成本。进一步使用只记录扩展函数地址偏移的方式,可以减少由于记录扩展函数地址导致的RAM开销,进一步减少RAM面积,降低芯片成本。
以上仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (4)

1.一种基于32位MCU主控的ROM代码函数修改方法,其特征在于:在RAM区中开辟一个专用于存放与ROM区中运行代码函数相对应的扩展代码函数的函数指针偏移地址的存储空间;当所述ROM区中相应的运行代码函数需要被替换时,根据对应的扩展代码函数的函数指针偏移地址跳转到RAM中执行,执行完毕之后跳回ROM区中继续执行其他的运行代码函数。
2.如权利要求1所述的基于32位MCU主控的ROM代码函数修改方法,其特征在于:所述ROM区中的每一运行代码函数均设有与其一一对应的扩展代码函数的函数指针偏移地址。
3.如权利要求1所述的基于32位MCU主控的ROM代码函数修改方法,其特征在于:所述ROM区中部分运行代码函数设有与其一一对应的扩展代码函数的函数指针偏移地址。
4.如权利要求1至3中任一项所述的基于32位MCU主控的ROM代码函数修改方法,其特征在于:所述主控代码运行函数根据对应的扩展代码函数的函数指针偏移地址是否为0确定是否需要被替换,若为非0则表示所述主控代码函数需要被替换。
CN201910256006.8A 2019-04-01 2019-04-01 基于32位mcu主控的rom代码函数修改方法 Pending CN110308953A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910256006.8A CN110308953A (zh) 2019-04-01 2019-04-01 基于32位mcu主控的rom代码函数修改方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910256006.8A CN110308953A (zh) 2019-04-01 2019-04-01 基于32位mcu主控的rom代码函数修改方法

Publications (1)

Publication Number Publication Date
CN110308953A true CN110308953A (zh) 2019-10-08

Family

ID=68074386

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910256006.8A Pending CN110308953A (zh) 2019-04-01 2019-04-01 基于32位mcu主控的rom代码函数修改方法

Country Status (1)

Country Link
CN (1) CN110308953A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117743011A (zh) * 2023-12-20 2024-03-22 无锡众星微系统技术有限公司 一种RomCode运行错误修复方法和装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030084229A1 (en) * 2001-10-23 2003-05-01 Ho Tat N. Methods and apparatus for modifying programs stored in read only memory
CN1862510A (zh) * 2005-05-10 2006-11-15 展讯通信(上海)有限公司 嵌入式系统中rom代码的修改方法
CN104424008A (zh) * 2013-08-30 2015-03-18 飞思卡尔半导体公司 安全引导 rom 补丁的系统及方法
CN105095108A (zh) * 2014-05-06 2015-11-25 展讯通信(上海)有限公司 输入输出存储器管理单元及控制方法、装置
CN107391085A (zh) * 2017-06-20 2017-11-24 深圳芯邦科技股份有限公司 一种rom代码补丁运行方法和系统
CN107894899A (zh) * 2017-12-06 2018-04-10 北京联盛德微电子有限责任公司 Rom程序升级系统及升级方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030084229A1 (en) * 2001-10-23 2003-05-01 Ho Tat N. Methods and apparatus for modifying programs stored in read only memory
CN1862510A (zh) * 2005-05-10 2006-11-15 展讯通信(上海)有限公司 嵌入式系统中rom代码的修改方法
CN104424008A (zh) * 2013-08-30 2015-03-18 飞思卡尔半导体公司 安全引导 rom 补丁的系统及方法
CN105095108A (zh) * 2014-05-06 2015-11-25 展讯通信(上海)有限公司 输入输出存储器管理单元及控制方法、装置
CN107391085A (zh) * 2017-06-20 2017-11-24 深圳芯邦科技股份有限公司 一种rom代码补丁运行方法和系统
CN107894899A (zh) * 2017-12-06 2018-04-10 北京联盛德微电子有限责任公司 Rom程序升级系统及升级方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117743011A (zh) * 2023-12-20 2024-03-22 无锡众星微系统技术有限公司 一种RomCode运行错误修复方法和装置

Similar Documents

Publication Publication Date Title
CN106569748B (zh) Flash文件系统的数据处理方法和装置
CN103092766B (zh) 一种用于nand flash的均衡损耗实现方法
CN101782871B (zh) 信息处理装置、处理器及存储器管理方法
CN106776362B (zh) 存储器的控制方法及装置
CN104423894B (zh) 数据储存装置以及快闪存储器控制方法
CN104615550A (zh) 一种存储设备坏块的处理方法、装置及存储设备
US7856614B2 (en) Programmable system-on-chip apparatus and method for updating firmware
CN104965708B (zh) 一种应用程序运行过程的内存管理方法及装置
CN103324503A (zh) 一种数据烧录系统及方法
CN108710583A (zh) Ssd写缓存区的管理方法、装置、计算机设备及介质
CN102902566A (zh) 一种应用软件的安装及启动方法和装置
CN103927130B (zh) 基于内存管理单元mmu的统一内外存架构
CN110187920B (zh) 基于otp的主控芯片的boot代码扩展方法
CN107783812A (zh) 虚拟机内存管理方法及装置
CN104424030A (zh) 多进程操作共享内存的方法和装置
CN109918234A (zh) 一种基于ssd的元数据恢复方法、装置、设备及介质
CN107911741A (zh) 可用存储空间提升方法、智能电视及计算机可读存储介质
CN105608013B (zh) 一种集成mram的存储卡控制芯片及存储卡
CN102541969A (zh) 基于fat文件系统的文件保护方法、系统及存储器
CN103365926A (zh) 在文件系统中用于保存快照的方法和装置
CN110308953A (zh) 基于32位mcu主控的rom代码函数修改方法
CN103425436A (zh) 终端设备以及虚拟存储单元管理方法
CN101303667B (zh) 建立磁盘空簇表及查找磁盘空簇的方法和装置
CN102567225A (zh) 一种管理系统内存的方法及装置
CN114416147A (zh) 固件载入方法、存储器及计算机可读存储介质

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: 518000 Intelligence Valley Innovation Park 701, 707, No. 1010 Bulong Road, Xinniu Community, Minzhi Street, Longhua District, Shenzhen City, Guangdong Province

Applicant after: Shenzhen deminli Technology Co.,Ltd.

Address before: 518000 Intelligence Valley Innovation Park 701, 707, No. 1010 Bulong Road, Xinniu Community, Minzhi Street, Longhua District, Shenzhen City, Guangdong Province

Applicant before: SHENZHEN DEMINGLI ELECTRONICS Co.,Ltd.

CB02 Change of applicant information
CB02 Change of applicant information

Address after: 2501, 2401, block a, building 1, Shenzhen new generation industrial park, 136 Zhongkang Road, Meidu community, Meilin street, Futian District, Shenzhen, Guangdong 518000

Applicant after: Shenzhen deminli Technology Co.,Ltd.

Address before: 701, 707, wisdom Valley Innovation Park, 1010 Bulong Road, Xinniu community, Minzhi street, Longhua District, Shenzhen, Guangdong 518000

Applicant before: Shenzhen deminli Technology Co.,Ltd.

CB02 Change of applicant information
RJ01 Rejection of invention patent application after publication

Application publication date: 20191008

RJ01 Rejection of invention patent application after publication