




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、32K code代码空间的扩展(试)( 38K、 40K、 42K)说明本文得以发布,特别感谢Dialog WC.IP(叶伟忠先生)提供方法及代码支援!1 、在 Dialog 配置代码中,内部有多个Case可设定默认是在System_ARMM0.c 中设为Case 23,即38K SysRam + 12K RetRam方式:2、 DA14580 在上电后,即使没有下载程序,也会自行启动,扫描各端口有否启动代码,依次OTP、 SP(I M)UART1/2/3/4 、 SPI( S) 、 IIC( S) 。 M 即为有外部Master, DA14580为从端。S即为外部Slave,DA14580为
2、主端。若此时SPI_S( Flash)有启动代码,就会自动搬32K code到 RAM 中,并自动从0x20000000 运行。注:为啥只搬32K, 是要顾及到内部OTP仅 32K空间,若超限会出错。该原始引导程序,被固化到DA14580 中。3、若有超过此32KB 长度,需要在DA14580 原始引导段搬好32K 后,运行用户代码时,用户代码开始段( 0x20000000 后的代码)来完成。合适的位置是在System_init 之后,在main 之前。即在 System_ARMM0.c 中, Systeminit 后, main 之前, 增加 code_loader 程序。 让 code_l
3、oader 将 Flash 中 0x8008 后的代码下载到接下来的RAM 空间 0x20008000 中。注:为啥RAM 空间是 0x20008000,而对应的Flash中不是 0x8000?因为 Flash中最前面的8Byte 是放识别数据,Flash 放代码是从0x0008 开始的,RAM 放代码从0x20000000 开始。代码长度与Flash 中的位置相差8Byte。二、扩展到38K 代码空间:1 、若代码超过32K,但在38K 内,不用改case,仍沿用CASE23即可。2、将附件中system_ARMM0_38K.c 及 boot_vectors_38K.s 文件,Copy到:d
4、k_appssrcplfrefipsrcarchbootrvds 目录与 system_ARMM0.c 及 boot_vectors.s 在同一目录内。3、将附件中的scatterfile_common.sct_38K.sct 文件, Copy到:dk_appsscatterfiles 目录,与scatterfile_common.sct 文件同一目录内。4、在 keil 工程中,去掉原system_ARMCM0.c,及 boot_vectors.s 文件,增加system_ARMCM0_38K.c,及boot_vectors_38K.s 文件,示例操作如下:在 keil 工程中,点选boot
5、 打开,鼠标右击弹开,左击选中Remove Filesystem_ARMCM0.c,删除:boot 目录,增加system_ARMCM0_38K.c天午科技有限公司技术文档SKN-TD-20154/3boot_vectors.s ,增加 boot_vectors_38K.sscatterfile_common.sct )5、在keil 工程中,选择调用scatterfile_common.sct_38K.sct 文件(不再使用然后,没有然后了!重新编译,烧到Flash,上电,广播OK,恭喜您,答对了!如果 ,还是不OK,悲催了!别紧张,您的结果,与60%的扩内存用户
6、相同!请参看附录1 (内存扩展FAQ)三、扩展到42K 代码空间:若代码接近42K 空间,与扩展38K 代码空间的方法相同,不过是挂42K 对应的文件,再增加如下操作:1 、 在 system_ARMM0.c 中,已改case 到 CASE7。2 、 在 arch_main.c 中增加,BLE_reserved_memory 段变量,并将其初始化为03、据Ret_RAM 分配的大小,修改em_map_ble.h 中对OFFSET_BUFFER的定义: S4、 修改 da14580_scatter_config.h ,使之指向Ret_RAM 的底部,不至赿界:5、若要修改PC仿真模式,如将23
7、修改为7,则需要修改ini 文件。 Copy复制再修改:1)将第二行CE对应23模式。 模式 Number, 转化为 16进制, 再 X2, 如 7*2=14=0x0e, 参见附件sysram_case7.ini,如下图:2)在如下设置菜单中,配置仿真模式:然后,没有然后了!重新编译,烧到Flash,上电,广播OK!如果不幸,又悲催了!别紧张,请参看附录1 (内存扩展FAQ) ,若未能解决,找天午技术部!一、扩展到40K 代码空间:若代码超过38K,但在40K内,改case到 CASE15。不过是挂40K对应的文件,类似扩展到42K的方法,仅参数略有不同,如下操作:1 、 在 system_A
8、RMM0_40K.c 中,已改case到 CASE15。2 、 在 arch_main.c 中增加,BLE_reserved_memory 段变量,并将其初始化为03 、据Ret_RAM分配的大小,修改em_map_ble.h 中对OFFSET_BUFFER的定义:S改为: #define OFFSET_BUFFERS (0x2800-EM_580_TOTAL_BUFFER_SZ & 3)4、修改da14580_scatter_config.h ,使之指向Ret_RAM的底部,不至赿界:改为: #define EXCHANGE_MEMORY_BASE 0x822205、若要PC仿真,如将23
9、修改为 15,则需要修改ini 文件。 Copy复制再修改:1)将第二行CE对应23模式。 模式 Number, 转化为 16进制, 再 X2, 如 15*2=30=0x1e, 参见附件sysram_case15.ini,如下图:2)在如下设置菜单中,配置仿真模式:重新编译,烧到Flash,上电,广播OK!有任何问题,请联系:天午技术部 OTA升级时,38K、 40K、 42K 代码空间的实现若有OTA升级,并代码存放空间为1F000放导引头;0x8000 入 Imagine1,0x13000 放 imagine2因为有 second_bootloader 会将代
10、码从Flash 连续读到内存中。不再需要system_ARMCM0.c中增加CODELOADER到 Flash中搬代码。附录 1: 内存扩展FAQ1 38K 空间编译报错,显示空间不足重新检查一遍,那三个system_ARMM0_38K.c boot_vectors_38K.s scatterfile_common.sct_38K.sct 是不是没正确加载。若已是38K 配置,还不够,那就看下ZI data 是否未大于8K?如下图:若是,好啦,用42K+8K的模式吧!2 编译提示,DEMO超过32K,不能编译!兄弟, 你是不是用的免费DEMO板 Keil SDK要么你公司花钱买个正版,,约 3
11、.3W人民币。要么, 网上山寨下!3 其它都正常,就是不广播程序有冲突,有些代码扩大后,不能运行,不是搬代码的原因,而是有些profile 同时开,相互间有冲突,至不能运行。而误以为是代码量大引起。我们已试过多少遍了,不要怀疑它,代码OK,就一定行!解决办法:先关掉一些宏选项,让代码量在32K 以内, 仿真运行OK。 比如要验证ANCC, 那就先关掉DISS PXPR FMPL注意:BASS容易与ANCC, SPOTAR冲突(因为追求完美的兄弟手贱,优化下代码,结果杯具了)SPI, IIC常有类似情况发生。4 扩大代码后,不能仿真,但烧进Flash,开机是一切正常。仿真器可能有问题,即使是原厂
12、DEMO SDK, Size未超过 32K的,也有可能某次仿真不成功,再退出,再仿真就 OK了,祝好运!若点击仿真图标按键,立即退出,是程序问题。6S 左右再退出,可能是看门狗跳出来,可关掉看门狗试试;也很有可能是仿真器(target 端)问题。嘿嘿,有钱买正版!5 代码大过32K,仿真就很容易跳进Hardfault_handler ,但烧到Flash没有问题。是的,我们有试到,大过32K 就需要破解,Jlink 仿真器(PC端)山寨的就这样!请支持正版!6 32K内时,用SmartSnippet 下载到 DA14580 即可运行,但超过32K还是这样下,一定不行,为什么?天午科技有限公司技术
13、文档SKN-TD-20154/3是的,我们还没有搞定这个事,正在请原厂帮解决,现在只有一招,仿真没问题,编译好后烧Flash,试机。7、怎么看我的程序有多大,为什么将Code +RO data +RW data 小于38K,也会在38K模式报代码超限?因为, RAM 存储是以32bit 即 4Bytes 为单位的,代码编译有时不会为整数,这样就会浪费pad 空间。而编译log 显示给你看的,是Code总和的大小,没有计算pad 用 0 填充的数量,通常约有40-100Byte 左右浪费。无法避免。工程编译完成后,会生一个map 文件,可以查到代码具体的空间大小。即,编译后选中如下图的Full_emb_cortex_M0, 右键弹开,选中黑体字dk_appskeil_projectsproximityreporter_fhout 下面的xxx.map,打开,拖到该文件尾部,找到下述位置:8 、如何知道哪个模式合适,38K、 40K、 42K 用哪个?CODE+RO+RW、 ZI 大小而定。两者都要能co
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 买卖合同担保人协议书
- 逾期仲裁调节协议书
- 装修合同毁约协议书
- 餐饮招收学员协议书
- 音乐机构合伙协议书
- 高考志愿招生协议书
- 鱼塘投股合同协议书
- 食堂劳务外包协议书
- 食品转让合同协议书
- 赌博自愿离婚协议书
- mq135空气质量检测传感器说明书空气污染控制用
- 国家开放大学《监督学》形考任务( 1-4)试题和答案解析
- 试卷交接签字单
- 高考化学答题技巧与规范课件
- 2022届高考英语复习:最后一节英语课(13张PPT)
- 加强评标专家管理实施方案
- 股票实战技巧(一)薛斯通道_CCI_DMI经典指标组合
- 小学生德育教育ppt课件
- 配电箱系统图
- 精选静电感应现象的应用练习题(有答案)
- 初中音乐--人声的分类--(1)pptppt课件
评论
0/150
提交评论