FR8016HD芯片



  • @felix-yang 我还有一个问题。就是官方SDK是使用ROM中得BOOT和BLANK A 和BLANK B的方式去升级。但是我不能使用你们的BOOT。基于产品协议方面的和一系列背景下。我希望开机的时候BOOT,然后我得BOOT跳转到APP。你能理解我意思吧Flash (1MB): 0x01000000 - 0x01100000
    区域 地址范围 大小
    BOOT引导程序 0x01000000 - 0x01008000 32KB
    APP主固件区 0x01008000 - 0x01048000 256KB
    APP参数存储区 0x01048000 - 0x01049000 4KB
    APP参数备份区 0x01049000 - 0x0104A000 4KB
    固件DFU标志区 0x0104A000 - 0x0104B000 4KB
    用户存储区 0x0104B000 - 0x0105B000 64KB
    OTA临时缓冲区 0x0105B000 - 0x0109B000 256KB
    预留扩展区 0x0109B000 - 0x010FD000 392KB
    BLE绑定信息 0x010FD000 - 0x010FE000 4KB
    BLE远端服务缓存 0x010FE000 - 0x010FF000 4KB
    跳转表/静态密钥 0x010FF000 - 0x01100000 4KB。大概我项目内存分配这样。我查看了手册跟SDK都无法从我得BOOT跳转到APP。这款芯片支持这么做吗。原谅我不太会描述



  • @romai 在附上我添加的一些LOG 0_1774350852654_54d1e0e9-f419-443a-a910-ecc30ea32788-372ee61dc02df86626eecbe2be0fa97e.png


  • Global Moderator

    @romai

    你用GPIO的例程来做你的boot

    上电我们的boot跳转到你的boot,然后你的boot,重新映射中断向量表和堆栈指针

    0_1774494069307_ac3a8363-1721-4b1f-852e-49f0c8a6268b-图片.png



  • @zr 之前我问了芯片代理商,群里有一个技术支持说(不支持)。他只会一个劲得发SDK里面得文件给我,但是这些文件并不能解决我得问题。现在看你的意思是能支持我去这么做?如果你愿意回答一下我遇到得具体信息,那么我将会很快能适配成功,并且产品全面替换成这个芯片了。



  • @zr 1:目前Flash布局是BOOT放在0x01000000占128KB用来做DFU,需要跑我司协议,APP放在0x01020000占256KB,APP链接地址也是0x01000000,靠remap映射过去。
    2:正常启动流程:ROM加载我的BOOT → BOOT校验APP → 跳转到APP运行。OTA升级流程:APP通过BLE把新固件下载到备份区 → 重启 → ROM加载BOOT → BOOT把备份区覆盖到APP区 → 再重启 → ROM加载BOOT → BOOT跳转到APP完成升级。
    3:目前现在卡在"BOOT跳APP"这一步,搞了快二十轮了,核心问题两个:
    第一个,remap设完之后不管怎么复位都被清掉了。platform_reset_patch试了、WDT试了、ARM的VECTRESET也试了,remap_length复位完都是0。我还往port_pull(0x50000020)写了个固定值0xA5A50001,复位完读回来是0xFFFFFFFF,确认整个system_regs都被硬件清了。SDK注释里说"remap在warm reset后保持",但我实测不是这样,不知道是我理解错了还是跟芯片版本有关。
    第二个,我试过不复位直接软件跳转到ROM的Reset_Handler(0x00000821),remap确实能保持,但ROM只打印一个"freqchip"就卡死了,正常上电是两三个然后进应用。中断、定时器、BLE基带复位、EM清零、UART FIFO、FPB、VTOR、时钟寄存器我都恢复了,还是不行。
    有个有意思的现象:用VECTRESET的时候,上电后第一次ROM能正常跑起来(两个freqchip然后正常加载了BOOT),但紧接着第二次就一个freqchip卡死了。我怀疑ROM在SRAM里有内部变量,跑了两轮BOOT之后SRAM被污染了ROM就起不来。
    如果可以希望回答我得问题

    1. remap到底能不能跨复位保持?什么条件下能保持?
    2. SDK的OTA做完platform_reset_patch复位之后,ROM是怎么知道要切到另一个bank的?是靠remap还是PMU寄存器还是flash里的什么标志?
    3. ROM启动的时候SRAM里有没有什么保留区域不能碰的?我scatter文件用了整个0x20000000开始的SRAM,是不是覆盖了ROM自己的东西。
    4. 我这种独立Bootloader的需求(自定义DFU协议、防盗版校验),在FR8016HD上有推荐的做法吗?还是说这个芯片不支持独立Boot,必须用SDK内置OTA?
    5. 我BOOT的image_size是0x20000,APP的是0x40000,大小不一样,ROM的双bank能处理吗。让ROM得BOOT来实现开机进入我得BOOT还是我得APP。当然如果
      能不需要复位,ROM 中得BOOT 。跳转到我得BOOT。然后我得BOOT跳转到 APP 这样更好了,


  • @zr 我会同步去看看GPIO得例程。同时等待你具体回答我得问题。十分感谢



  • @zr 我手头的SDK文件夹是 fr801xh_SDK_1043bb7。我没找到这个GPIO例程。我得芯片是fr8016HD.是你们内部的另一版SDK吗。你能给我链接下载吗。
    我看你们图片 好像不需要 remap,不需要重进 ROM,不需要任何复位。直接跳,太棒了,我要想看 app_boot_retarget 怎么用的,BOOT 和 APP 两边的 scatter 文件怎么配的。




  • Global Moderator

    @romai 直接用从机例程也行,APP的sct文件中需要设置好代码在ROM中的起始位置



  • @zr 能直接给我SDK,还有告诉我例程名字路径吗。事实上,我已经遍历了我手头这个fr801xh_SDK_1043bb7 sdk 的所有例程了。



  • @zr 我们有了成熟的产品了。只是量大之后考虑到降本,NOR芯片替换成这款,之前板子没到的时候已经看着手册驱动,蓝牙部分代码都更换好了,配置好了。只是没想到板子到了跑起来并不顺利