在线客服
客服热线
客服热线
邮箱
电话
电话
js_thumb bannerPic
您现在的位置:
首页
/
/
/
SDK 8.3:更新说明

SDK 8.3:更新说明

Highlights

已知问题(局限性):

  • 调试 ING916xx 时,复位方式不能选择 SYSRESETREQ,应该选择 VECTRESET(不同的调试器可能使用不同的名词,J-Link 里称为 Core)。 几种调试时复位整个 SoC 的临时措施:
    • 方法 1:先进入下载模式,然后再开始调试;
    • 方法 2:对于 JLink,将 自定义脚本放到工程目录,并在进入调试模式后再次点击 IDE 里的 “复位” 按钮。
  • ING916XX 省电模式仍在持续开发、改进中,QUERY_DEEP_SLEEP_ALLOWED 回调目前不允许返回 PLATFORM_ALLOW_BLE_ONLY_SLEEP。

兼容性: v8.3.3 gap_start_ccm 函数签名与旧版本不兼容。

1. 软件包

  • [更新] ING916:优化低功耗时的电流表现 (8.3.0)

  • [新增] 回调函数表相关 API (8.3.0)

    现有的 Platform 回调(事件及中断)注册使用了数组,占用一定的内存。考虑到内存资源宝贵,新增了两个 API, platform_set_evt_callback_table 和 platform_set_irq_callback_table,可以一次性为所有事件、中断注册回调函数, 而且整个函数表可存储于 Flash。

    下面的代码定义了回调函数表,并通过 platform_set_evt_callback_table 注册。

      const platform_evt_cb_table_t evt_cb_table =
      {
          .callbacks = {
              [PLATFORM_CB_EVT_HARD_FAULT] = {
                  .f = (f_platform_evt_cb)cb_hard_fault
              },
              [PLATFORM_CB_EVT_ASSERTION] = {
                  .f = (f_platform_evt_cb)cb_assertion
              },
              [PLATFORM_CB_EVT_HEAP_OOM] = {
                  .f = (f_platform_evt_cb)cb_heap_out_of_mem
              },
              // ...
          }
      };
    
      platform_set_evt_callback_table(&evt_cb_table);
    

    两种注册方式不可混用,例如,不要既使用 platform_set_evt_callback_table 又使用 platform_set_evt_callback

    对于 CPU 而言,从深睡眠唤醒后中断恢复为屏蔽状态,新添了用于使能中断的 platform_enable_irq

    强烈建议: 采用如上所示的指定序号的数组初始化(ISO C99: Designated Initializers)写法。

  • [新增] Extension/Experiment 软件包添加更多的 BLE 私有扩展功能 (8.3.0)

    • 锁频。使用 ll_lock_frequency 锁频后,所有的蓝牙活动都被固定在指定的信道。使用 ll_unlock_frequency 可解锁。

    • 广播间隔不再要求必须 >= 20ms。gap_set_ext_adv_para 里的 interval 参数允许填 1。

    • 仅限 ING916:允许传统广播数据长度超过规范定义的 31 字节

    • 仅限 ING916:自定义数据白化初值、广播数据包 PDU 类型、CTE 比特

    • 仅限 ING916:对传统广播进行 CTE IQ 采样

  • [修正] ING916:持久化寄存器 API (8.3.0)

    ING916 上的 platform_write_persistent_regplatform_read_persistent_reg 功能现已正常。

  • [新增mini 软件包 (8.3.0)

    对于简单的应用而言,内存需求很小,为此,SDK 提供了 mini 软件包。这种软件里的 BLE 协议栈只占用 8KiB SHARE 内存,SYS 内存小于 16KiB。协议栈的功能受限,只支持一组广播集,一个连接。

    App 通过 SYSCTRL_SelectMemoryBlocks 可关闭未使用的内存块,节省功耗。 比如 SYS 内存总占用小于 16KiB 时就在 app_main 里加一行代码:

      SYSCTRL_SelectMemoryBlocks(SYSCTRL_RESERVED_MEM_BLOCKS);
    

    不推荐)对于 8KiB 以外的共享内存,也可以作为普通内存,自由使用。 开发者需要手工将对应的内存范围(下表)添加到开发工具中。

    芯片 起始地址 大小(KiB)
    ING918 0x400A2000 56
    ING916 0x40122000 24

    以 Keil 和 ING918 为例,这段共享内存的设置如图:

  • Peripheral Console 已切换到 mini 软件包。

  • [修正] Controller 里对 LL_CONNECTION_PARAM_RSP 的处理 (8.3.0)

    当 referenceEventCount 字段小于或等于当前的 EventCount 且差别不大时,逻辑有误,导致断连接。现已修正。

  • [修正] 启用 Enhanced Ticks 时的稳定性问题 (8.3.0)

    对于内置 FreeRTOS 的软件包,当启用 Enhanced Ticks 后,IDLE 进程有可能死循环。现已修正。

  • [更新] API:platform_install_task_stack (8.3.0)

    现在 platform_install_task_stack 支持为 Timer 任务重新配置栈空间。旧版本仅支持 Controller/Host 等两个任务。

  • [更新] 几个 ATT API 的签名 (8.3.0)

    att_server_notify 和 att_server_indicate 的数据参数现在使用 const 修饰。

  • [修正] 8.3.0 引入的低功耗下 BLE 加密无法完成的问题 (8.3.2)

  • [新增] 3 个 LL API (8.3.3)

    • ll_aes_encrypt 用于以阻塞方式快速执行 AES 加密(所有软件包)
    • ll_get_conn_infoll_get_conn_events_info:用于获取连接事件的相关信息(目前仅存在于 exp 软件包)
  • [更新gap_start_ccm (8.3.3)

    与 gap_aes_encrypt 类似,新的 gap_start_ccm 增加了两个参数用于指定计算完成时的回调:

      gap_hci_cmd_complete_cb_t cb, // 计算完成后的回调
      void *user_data               // 回调的用户数据
    
  • [更新] 32k 时钟的配置流程 (8.3.4)

    现在 ING916/ING918 使用完全相同的 32k 配置、切换流程,不再需要延迟等待等操作。

2. 外设驱动

  • [更新] ING916:QDEC/KeyScan/SysCtrl/Comparator/ADC 驱动 (8.3.0)

    完善接口。部分新接口可能与由版本不兼容。为 ADC 数据的滤波处理提供参考实现。

  • [更新] ING916:USB (8.3.2)

    支持变长数据,修复其它问题。

  • [更新] SYSCTRL (8.3.2)

    • 修正 ING918 下唤醒源的读取;
    • 为 ING916 PVD、PDR 添加 API。
  • [修正] ING916: SYSCTRL、ADC 里的问题 (8.3.4)

    • 修正 ING918 下唤醒源的读取;
    • 为 ING916 PVD、PDR 添加 API。

3. 库函数

  • [更新] ING918:Power control 库现在提供 3 种策略供选择 (8.3.0)

  • [新增] USB MSC 模块 (8.3.4)

    方便为 app 添加 U 盘功能。

4. 文档

4. 示例

  • [修正] 若干示例中 ING916 的 Flash 存储地址 (8.3.2)

  • [修正] Peripheral Console (Real-time) 的堆空间设置 (8.3.2)

  • [更新] HID Mouse:演示 DIR_ADV (8.3.4)

5. 工具

  • [修正] Wizard: FOTA/Cube 相关代码的生成 (8.3.0)

  • [更新] Cube (8.3.0)

    ING916 时钟树视图比较复杂,查找外设需要来回拖动界面。现在增加了查找功能,可以方便地定位外设,将其显示于屏幕中央:

  • [更新] tracer (8.3.0)

    tracer 现已支持 ING916,可通过主菜单选择。注意:需要先选择 Chip Family,然后打开 log 文件。

  • [新增] ING916: USB downloader (8.3.0)

    对于 ING916 芯片,可通过 USB 接口下载程序,相比串口,下载速度更快。提供 3 种下载工具:

    • ing_usb.exe:单独的命令行版本的下载工具
    • Downloader:在原有的 GUI 版本里将端口配置为“USB”即可
    • icsdw.py:Python 版本的下载工具,适合量产
  • [修正] Cube 关于 UART、WATCHDOG 等的问题 (8.3.2)

  • [修正] Cube 918 SPI0 时钟、UART RX 代码生成相关问题 (8.3.3)

  • [更新] ING916:Flash 烧写算法现已支持 IAR/SEGGER/Crossworks (8.3.4)

  • [修正] Cube 关于 WATCHDOG/ING91682C/GPIO唤醒 等的问题 (8.3.4)

上一个 :
上一个 :
imgboxbg
SDK 8.3:更新说明
Highlights
1、ING916: USB 下载器
2、新增《开发者手册:低功耗》
3、mini 软件包
SDK 新工具:Cube
SDK 新工具 Cube 是一个图形化的初始化代码生成器,可为各种芯片型号生成 C 代码。

快捷导航

客服热线
服务时间:
-
客服热线
邮箱
电话
电话

联系我们

客服电话:010-85160285

客户支持:service@ingchips.com

 

简历投递:hr@ingchips.com

公司地址

北京:北京市海淀区紫金数码园3号803

上海:上海市浦东新区祥科路58号炬芯大厦A座3层316

深圳:深圳市南山区科技园曙光大厦1009

技术讨论群

开发者网站

Github

版权所有:桃芯科技(苏州)有限公司  苏ICP备2022018764号-2       网站建设:新网