tag 标签: oad

相关博文
  • 热度 19
    2015-9-24 07:06
    3564 次阅读|
    1 个评论
    BLE 空中升级谈   -- CC2541 的产品开发中OAD注意事项(续)   TI CC2541支持多个硬件,多个软件对它进行空中升级,可以有不同的组合,硬件有     编号 名称 Hex 用法 1 Cc2540 dongle CC2540_USBdongle_HostTestRelease_All.hex 直接插在电脑上使用,驱动程序是ccxxxx_usb_cdc,usb作为CDC串口使用。 2 Cc2541 module CC2541_SmartRF_HostTestRelease_All.hex 需要一个USB-UART,或者RS232-UART接口板,连接模块的P02,P03(UART0) 3 Cc2540 module CC2540_SmartRF_HostTestRelease_All.hex 需要一个USB-UART,或者RS232-UART接口板,连接模块的P02,P03(UART0)   目前可以使用的软件有   编号 名称 平台 可用硬件 用法 验证 A BLE device monitor Windows PC 2,3 电脑与模块连接,可借助RS232-UART,或者USB-UART接口板,连接上以后的操作见软件使用向导。 是 B BLE device monitor Android BLE android 手机 apk文件没有找到 否 C Bluetooth LE OAD tool Windows 8/10 带 BLE BLE win8 / win10 电脑,可用dongle 将boot + imageA写入目标设备后,在系统设置/蓝牙中绑定设备,如果要输入PIN的话,输“0”,之后运行app,刷新列表后可以选定目标开始升级。 是 D TI BLE Multitool iOS iPhone4s以上(含) 点此查看 否     以A2的组合来实现空中升级是比较容易凑齐硬件的,只是要注意A的串口配置,不要带流控,若是A1组合,则可以在ti.com找到很详细的说明,也可点 这里 。其他的软件基本可以相应平台直接运行, 不需要额外的硬件。   硬件齐备之后,准备一个可以用来升级的image B,TI-BLE Stack 1.4.0当中的SimpleBLEPeripheral工程有个CC254x-OAD-Img B选项,原封不动的编译生成一个bin文件就好了。它就是接下来空中升级的主角,为了说明,我们不妨给生成的文件取名为imgBSample.bin。   传输imgBSample.bin的时间在各个组合里是不一样的。通常生成的bin文件也就刚过100kb,使用BLE传输完成它,这几个平台都可能要3到4分钟,区别不大。但若使用原生的Image A,在windows 8/10就差不多要18分钟。这是非常慢的。想要缩短这个时间,密决就是调整连接参数。本人使用Bluetooth LE OAD Tool (WIN 10),简单测试过连接参数对传输时间的影响,大致如下。   序号 连接间隔 connInterval   SlaveLatency   Timeout OAD耗时 Time 说明   1 6 1 50 3:27   2 48 0 960 18:00 Windows默认 3 11 0 50 4:58   4 6 0 50 Failed   5 7 0 50 Failed   6 8 0 50 3:49   注:这里的连接间隔1代表1.25ms   图一 Newbit Bluetooth LE OAD Tool 界面   传输完成后,系统自动重启,然后运行imgBSample.bin这个程序。但通常也会遇到如下问题,传输完成了,本应自复位后运行新程序,结果一定要手动复位才能正常运行,建议使用开发板来验证,若开发板可以自动重启并正常运行,说明程序没错,接着就要检查硬件了,比如电源供电,是否有32K晶体等,具体可以参考这里。     完成以上所有工作,那么你已经完整的体验了空中升级,若只是按照这样做也还是Demo, 并不是一个产品所需要的空中升级,完整的空中升级还应该有完全保护措施,比如升级的客户端身份确认, 升级失败后的处理,甚至断点断传也可考虑进来。据说nordic可以实现增量升级,可以大大地缩短升级的时间,但不清楚它具体如何实现。当然,关于这些暂时就不多说了,若见此文的你有兴趣,我们可根据本文所描绘的空中升级,在2541上做一个boot, image A的固件,外带image B的模板。   附windows 10, ios 8.3, miui 6的BLE连接参数默认值   Platform connInterval SlaveLatency Timeout Win10 48 0 960 MIUI 6 39 0 700 IOS 8.3 24 0 72      
  • 热度 23
    2015-9-24 07:01
    2036 次阅读|
    2 个评论
    BLE  空中升级谈   -- CC2541  的产品开发中 OAD 注意事项     现在的智能设备(可穿戴,智能家居,智能玩具等)是越来越多了,大公司的产品颜值高,功能强大而完备的应该说是比比皆是,这里不谈论它是满足所谓的刚性需求。许多新 (shan) 创 (zhai) 公司做的产品就只能凭一面之缘了,要是喜欢你就买下,反正后面觉得哪里不好,用着不爽就扔掉便是,看官自是不缺这几十一百块钱。比如像小米的一代手机  Mi BNAD (现售 69 ) , 电子称 Mi Scale (现售 99 )。虽说便宜事实上这确是匠心之作,就本人了解,从空中升级来看,它们就很棒,设备它的目前的程序存在严重问题,或者它的功能在现有硬件资源还能进行合理的扩增,小米会在后续推出相应的 firmware ,就算产品已经到了用户手上也可以得到升级,这一切都是免费的,甚至是不知不觉的,要不怎么说相信大公司呢。所以有着完美主义情节的在下总觉得空中升级就应该是此类设备必备的功能(之一)。   前言说小米是大公司,产品有带空中升级,话外音就是想说当前市面上许多众筹,或者外贸品牌转内销,一些刚开创的小牌产品,基于快速上市这一当前市场的最高原则,几乎把这个“不 (hen) 起 (zhong) 眼 (yao) ”的功能给选择性忽略了。话说在这里,不怕砖块。事实上这个功能之于产品是非常重要的, 对于这些很容易就被弃之不用的小物件是极重 / 相当重要的!   这么重要的功能,如何开发呢,以低功耗蓝牙来说,本人最早自 TI BLE Stack 1.4.0 开始了解,也基于这里开始开发。而这个版本的协议栈,就已经自带了空中升级的例程,并且编写了相当不错的 boot ,这是从 IC 原厂的角度来看,也是 IC 原厂的态度,一个小的 智能设备 本来就应当具备空中升级。没错,不用怀疑,必须的特性。虽然原厂给了这么大力的支持,还是很遗憾,现在市面还是有不( zhu )少 (duo) 产品就是没有空中升级的,让人难予置信。除了 TI , 其他原厂比如 NODIC 也有,这是半导体大厂的共识。 有了这么好的基础,想演示空中升级已经是极其容易了,于是应该也出现了按照这个 demo 水准而推出的“产品”,但我没有去一一验证过,相信找找肯定还是会有的。有的产品根本没有,有的也只是一个 demo ,这让趟这行浑水的人总觉得世间坑无数,此处再添来的感慨。好了,牢骚发完,谢谢各位的耐心,我再接着讲讲这个空中升级也称 Upgarade over the air( 简记为 OTA), Over Air Download (简记为 OAD ),大概怎么来做,原谅这里也不会太详细,详细的部分各方案的开发向导中就有,可能是英文的,但也容易读懂。以 TI 的 CC2541 为例,对于其他 IC 请举一反三。   第一条 是了解原厂的空中升级方案,作为一线开发者,要达到深入的理解,只是了解还不够的。 TI 的 OAD 方案大致是使用  boot + image A + image B 这样的方式, boot 负责启动系统, image A 能更新 image B , 反过来 image B 也能更新 Image A ,这样设备就可以反复进行 OAD 了,  Image A/B 的作用是完全等同的。而通常在实际的开发中,  image B 才是设备正常使用时运行的程序 , Image A 仅是用来更新 Image B 会更好,一来安全,再者可以让 Image B 有更多的空间。按照后面的设计它们分别占用三个分区,仅 image B 区域是可以擦除的。另外还有一个区域是前面三者共同使用的,用于存储用户信息等,这个空间是共享的。具体的解读可以找度娘。 STEP BY STEP 1,  http://bbs.ednchina.com/BLOG_ARTICLE_3019402.HTM   干货在后面。 未完待续。。。    
  • 热度 15
    2015-9-21 16:08
    10666 次阅读|
    2 个评论
    TI的BLE支持空中固件升级,这是一个非常有意思的功能。今天我尝试了一下,下面把过程整理一下。 这是 TI 官方的视频,我基本就是照这个视频整理的。 上: http://focus.ti.com/cn/general/docs/video/Portal.tsp?entryid=0_nfn3dztmlang=cn 下: http://focus.ti.com/cn/general/docs/video/Portal.tsp?entryid=0_0tlarhmslang=cn   硬件平台: TI 的 BLE 开发套件 CC2541 Mini Development Kit ,包括 CC-Debugger 、 USB Dongle 、 CC2541 Keyfob Demo 软件环境: IAR Embedded Workbench for 8051 IDE V8.20.2 和 TI 的 BLE Device Monitor V1.1.3 ,同时安装 TI 的 BLE 协议栈 BLE-CC254x-1.4.0.   一:配置 BIM ( Boot Image Manger ) 打开 IAR ,打开 BLE-CC254x-1.4.0 下的工程 C:\Texas Instruments\BLE-CC254x-1.4.0\Projects\ble\util\BIM\cc254x\BIM.eww ,然后编译,下载到 Keyfob Demo 中。 图 1 二、配置 Image A 1. IAR 中,选择 Project → Edit Configurations ,选择 New… ,如图 2 所示,添加一个新的配置,起名就叫 Image_A ,点击 OK ,这时 IAR 界面的左边导航部分,就变成 Image_A 了,如图 3 。     图 2 图 3 2. IAR 中左侧导航中,找到 App 文件夹下的 keyfobdemo.c 文件,双击打开,找到宏定义 DEFAULT_ENABLE_UPDATE_REQUEST ,将其改为 FALSE (原来是 TRUE ),见图 4 。否则会影响 BLE Device Monitor 对其进行空中升级,到时可以再改回来。 图 4 3. IAR 左侧导航中找到 Profile 文件夹,点击右键添加 oad_target.c 和 oad_target.h 两个文件,见图 5 ,二文件位于 C:\Texas Instruments\BLE-CC254x-1.4.0\Projects\ble\Profiles\OAD 中。 图 5 4. 在 IAR 导航中找到 HAL → Target → CC2540EB → Driver ,右键添加文件 hal_crc.c ,见图 6 ,该文件位于 C:\Texas Instruments\BLE-CC254x-1.4.0\Components\hal\target\CC2540EB 中。 图 6 5. 在刚才的 keyfobdemo.c 文件中,找到 KeyFobApp_Init() 函数,在里面添加 OADTarget_AddService() 函数,见图 7. 图 7 6. 在 keyfobdemo.c 的前面,添加引用 OAD 的头文件, OAD.h 和 OAD_target.h ,见图 8. 图 8 7. 点击 Project → Option… ,或直接按 Alt+F7 ,选择 C/C++ Compiler ,选择 Preprocessor ,在 Additional include directories 中添加路径 $PROJ_DIR$\..\..\Profiles\OAD ,在 Defined symbols 中添加: FEATURE_OAD OAD_KEEP_NV_PAGES FEATURE_OAD_BIM HAL_IMAGE_A 图 9 8. 点击 Project → Option… ,或直接按 Alt+F7 ,选择 Build Actions ,在 Post-build command line 中添加: "$PROJ_DIR$\..\..\common\CC2540\cc254x_ubl_pp.bat" "$PROJ_DIRquot; "ProdUBL" "$PROJ_DIR$\Image_A\Exe\KeyFobDemo" 注意,各双引号之间只有一个空格。见图 10. 注意图中红框标的部分, Image_A 是和之前第 1 步对应的。 图 10 9. 点击 Project → Option… ,或直接按 Alt+F7 ,选择 Linker ,选择 Config , Linker Configurationfile 中勾选 Override default ,添加 C:\Texas Instruments\BLE-CC254x-1.4.0\Projects\ble\common\cc2540\cc254x_f256_imgA.xcl ,如图 11. 图 11 10. 点击 Project → Option… ,或直接按 Alt+F7 ,选择 Linker ,选择 Output ,按图 12 进行设置。 图 12 11. 点击 Project → Option… ,或直接按 Alt+F7 ,选择 Linker ,选择 Extra Output ,勾选 Override file , Output format 选择 Intel-Extended ,如图 13 所示。 图 13 12. 点击 Project → Option… ,或直接按 Alt+F7 ,选择 Texas Instruments ,选择 Download ,去掉 Erase flash ,如图 14 所示。 图 14 13. 编译,下载板子中,编译时可能会出现如图 15 所示的脚本错误,忽略即可。 图 15  
  • 热度 30
    2015-9-21 16:08
    7421 次阅读|
    13 个评论
    三、配置 Image B 方法如 Image A ,也是选择 Project → Edit Configurations ,选择 New… ,添加 Image_B ,如图 16. 其他的,在工程中添加文件,文件中添加代码等都已经在配置 Image A 时完成。 图 16 其他要注意的几个地方: 1. 点击 Project → Option… ,或直接按 Alt+F7 ,选择 C/C++ Compiler ,选择 Preprocessor ,将 Defined symbols 中的 HAL_IMAGE_A 改成 B ,见图 17. 图 17 2. 点击 Project → Option… ,或直接按 Alt+F7 ,选择 Build Actions ,修改 Post-build command line 中的路径,改为 Image_B ,如图 18 所示。 图 18 3. 点击 Project → Option… ,或直接按 Alt+F7 ,选择 Linker ,选择 Config ,将 Linker Configuration file 中的文件改为 B ,如图 19 所示。 图 19 可以编译生成 Hex 文件后下载,注意,配置 Image B 生成 Hex 文件这一步并不是必须的。 四、生成 bin 文件 这一步是非常重要的,因为空中升级,目前只支持 bin 文件。以 Image B 为例,当然,也可以是 Image A. 1. 在 Image B 工程中,点击 Project → Option… ,或直接按 Alt+F7 ,选择 Linker ,选择 Extra Output ,勾掉 Override file , Output format 选择 simple-code ,如图 20 所示。 图 20 2. 打开之前添加的 OAD_target.c 文件,找到宏定义 OAD_IMAGE_VERSION ,将其改为 0x0002 (原来是 0x0000 ),如图 21 所示。 图 21 编译后,在 EXE 文件夹中会生成 bin 文件。 五、空中升级 有了 bin 文件就可以进行空中升级了,找开 BLE Device Monitor ,同时打开 KeyFobDemo ,按键广播, Monitor 会扫描到 KeyFobDemo ,点击 connect 之后,在 Event log 中会出现: 图 22 点击 file ,选择 Progame ( OAD ),选择生成的 bin 文件,可以看到版本的不同: 图 23 点击 start ,当进行到 100% ,就完成了固件空中升级。 图 24   记录: 1)要把 BLE 协议栈 BLE-CC254x-1.4.0 安装在C盘,在其他盘符下没有生成bin文件,不知道什么原因。我的系统是win7的,不知道有没有关系。 2)IAR要用8.20版的,血的教训。我用最新的8.30的折腾好几天,没有生成bin文件。8.20版本的下载:http://supp.iar.com/Download/SW/?item=EW8051-EVAL-820 或 http://pan.baidu.com/s/1qWz0Kmo   附件是我的上下两篇博文的PDF档及TI的官方OAD的文档。
  • 热度 22
    2015-9-21 16:04
    5187 次阅读|
    2 个评论
    前面用两篇博文介绍了TI蓝牙空中升级(OAD)的方法(http://bbs.ednchina.com/BLOG_ARTICLE_3019402.HTM and http://bbs.ednchina.com/BLOG_ARTICLE_3019403.HTM),那必须是在IAR环境中。如果是批量生产,不可能对每一片MCU都用这种方法,也没有必要在生产部门的电脑上安装IAR。 下面的方法是通过TI的烧录工具SmartRF Flash Programmer来实现。当然,前提是要通过IAR产生两个Hex文件BIM_CC254xF256.hex和KeyFobDemo.hex,这跟两篇博文里提到的一样。 硬件平台还是TI的CC2541板子。连上CC-Debugger,打开SmartRF Flash Programmer,Flash Image选择BIM_CC254xF256.hex,下面Actions选择Erase Program and Verify,点击Perform actions   当进度条显示下载校验完成之后,再在Flash Image中选择另一个hex文件,Actions选择Append and Verify   下载完成之后,这片CC2541就具有OAD的功能了。当然,用于后续生产的话好像也不方便,毕竟要烧录两次,还要有不同的下载选项。不要紧,我们用SmartRF Programmer的另一个功能。 在Flash Image的路径中我们写如下的一个hex文件,相当于新建一个OAD.hex文件。Actions选择Read Flash into hex-file.   完成之后,会在原来的路径下生成一个OAD.hex文件。 这样就把之前的两个hex文件合并成了一个hex文件,方便量产使用了。