导航

    Freqchip开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 最新
    1. 主页
    2. ding56239
    3. 帖子
    D
    • 继续与 ding56239 聊天
    • 开始与 ding56239 的新会话
    • 举报资料
    • 资料
    • 关注
    • 粉丝
    • 屏蔽
    • 主题
    • 帖子
    • 最佳
    • 群组

    ding56239 发布的帖子

    • 修改FLASH_CAPACITY地址后导致配对卡死

      #define FLASH_CAPACITY 0x00800000

      #if FLASH_CAPACITY == 0x00080000
      #define BLE_STACK_KEY_STORAGE_OFFSET 0x7F000
      #define BLE_BONDING_INFO_SAVE_ADDR 0x7D000
      #define BLE_REMOTE_SERVICE_SAVE_ADDR 0x7E000
      #elif FLASH_CAPACITY == 0x00040000
      #define BLE_STACK_KEY_STORAGE_OFFSET 0x3F000
      #define BLE_BONDING_INFO_SAVE_ADDR 0x3D000
      #define BLE_REMOTE_SERVICE_SAVE_ADDR 0x3E000

      #elif FLASH_CAPACITY == 0x00800000
      #define BLE_STACK_KEY_STORAGE_OFFSET 0x7FF000
      #define BLE_BONDING_INFO_SAVE_ADDR 0x7FD000
      #define BLE_REMOTE_SERVICE_SAVE_ADDR 0x7FE000
      #else
      #error "flash capacity configuration error!"
      #endif //FOR_2M_FLASH

      #define FLASH_CAPACITY 0x00800000 对应的是8M 配对后直接就卡死了
      #define FLASH_CAPACITY 0x0080000 对应的是512K 完全可以没有问题
      const struct jump_table_image_t _jump_table_image attribute((section("jump_table_1"))) =
      {
      .image_type = IMAGE_TYPE_APP,
      .image_size = 0x64000, // 400KB reserved
      };
      我的代码固件区域400K
      想问一下这个问题如何解决,多谢多谢

      发布在 FR800x
      D
      ding56239
    • RE: FR8008GP的flash是8M的。在keil中我只有512k的FLM文件,请问哪里有8m的FLM文件

      @mars 如何获取芯片原始的固件包版本号,512K 配对完全开源 8M就不行

      发布在 FR800x
      D
      ding56239
    • RE: FR8008GP的flash是8M的。在keil中我只有512k的FLM文件,请问哪里有8m的FLM文件

      Client: GATTC_MSG_LINK_CREATE, conn_idx=0
      [INFO] [project] slave[0],connect. link_num:1
      BLE connected.
      [INFO] [project] adv_end,status:0x00
      os_get_free_heap_size() 2792
      [INFO] [project] Link[0]param update,interval:24,latency:10,timeout:500
      [INFO] [project] mtu update,conidx=0,mtu=247
      pairing accept:1,1
      os_get_free_heap_size() 2516
      freqchip 修改后连接蓝牙直接就卡死了 这个是打印信息

      发布在 FR800x
      D
      ding56239
    • RE: FR8008GP的flash是8M的。在keil中我只有512k的FLM文件,请问哪里有8m的FLM文件

      FR8008GP 是选择0x00100000 这个吧 它的flash是8M字节

      发布在 FR800x
      D
      ding56239
    • RE: FR8008GP的flash是8M的。在keil中我只有512k的FLM文件,请问哪里有8m的FLM文件

      @_jim 0_1783912728712_fd31593e-49eb-4ede-9a24-9d5863a36ff3-37273800b52a4ab81a6bf00d9463dc3e.png 您好这个对吗,我怎么看着是16M 它怎么说是8M 绑定信息位置修改了就无法连接蓝牙了 我的芯片是FR8008GP

      发布在 FR800x
      D
      ding56239
    • RE: FR8008GP的flash是8M的。在keil中我只有512k的FLM文件,请问哪里有8m的FLM文件

      您好,FREQCHIP调试工具V1.3.9.1是不是512K的 我选择了8M 绑定信息位置改了总是连接不成功

      发布在 FR800x
      D
      ding56239
    • FR8008GP重启判断是否正确

      // 复位控制寄存器地址
      #define RESET_CTRL_ADDR ((volatile uint32_t *)0x5000000C)

      // 复位源位定义(需根据芯片手册补充,这里是典型示例)
      #define RESET_CTRL_POR_BIT (1 << 0) // 芯片上电POR复位
      #define RESET_CTRL_EXT_BIT (1 << 1) // 外部IO Reset复位
      #define RESET_CTRL_IWDG_BIT (1 << 2) // IWDG复位
      #define RESET_CTRL_SW_BIT (1 << 3) // 软件调试复位

      // 复位原因枚举
      typedef enum {
      RESET_REASON_UNKNOWN = 0,
      RESET_REASON_POWER, // 芯片上电POR复位
      RESET_REASON_EXT, // 外部IO Reset复位
      RESET_REASON_WDG, // IWDG复位
      RESET_REASON_SW // 软件调试复位
      } Reset_Reason_t;

      /**

      • @brief 读取复位原因(基于 0x5000_000C 寄存器)

      • @return 复位原因枚举
        */
        Reset_Reason_t reset_reason_get(void)
        {
        Reset_Reason_t reason = RESET_REASON_UNKNOWN;
        uint32_t reg_val = *RESET_CTRL_ADDR;

        // 按优先级判断(POR > 外部IO > IWDG > 软件)
        if (reg_val & RESET_CTRL_POR_BIT) {
        reason = RESET_REASON_POWER;
        } else if (reg_val & RESET_CTRL_EXT_BIT) {
        reason = RESET_REASON_EXT;
        } else if (reg_val & RESET_CTRL_IWDG_BIT) {
        reason = RESET_REASON_WDG;
        } else if (reg_val & RESET_CTRL_SW_BIT) {
        reason = RESET_REASON_SW;
        }

        // 清除复位状态位(通常写1清除,以手册为准)
        *RESET_CTRL_ADDR = reg_val;

        return reason;
        }

      /**

      • @brief 打印复位原因(适配你的日志系统)
        */
        void reset_reason_print(void)
        {
        Reset_Reason_t reason = reset_reason_get();
        switch (reason) {
        case RESET_REASON_POWER:
        log_printf("RESET", FILE, LINE, "复位原因:芯片上电POR复位");
        break;
        case RESET_REASON_EXT:
        log_printf("RESET", FILE, LINE, "复位原因:外部IO Reset复位");
        break;
        case RESET_REASON_WDG:
        log_printf("RESET", FILE, LINE, "复位原因:IWDG复位(看门狗超时)");
        break;
        case RESET_REASON_SW:
        log_printf("RESET", FILE, LINE, "复位原因:软件调试复位(主动触发)");
        break;
        default:
        log_printf("RESET", FILE, LINE, "复位原因:未知(请核对寄存器位定义)");
        break;
        }
        }
      发布在 FR800x
      D
      ding56239