4880|13

13

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

CC254X新手问个问题:怎么修改HAL层代码 [复制链接]

 
TI BLE开发包提供了HAL层的源代码,可是如果发现这些源代码需要根据具体应用做修改,比如我想采集芯片内的温度数据,我发现现有的Hal_Adc就不适合温度采集,需要添加功能。那我是直接修改TI提供的Hal_Adc源代码,还是另外自己写一个ADC代码文件。多谢了!
此帖出自无线连接论坛

最新回复

好的 , 只能简单说说我的一点认识,多交流下 dialog这个功耗很低,蛮多大厂再用的,带OTA区域要是量产产品很方便体积可以做的很小,基本上算是业界最小了,我了解过来的。前期开发需要加外部flash体积下不去。 nordic系列的基本上算是最容易上手的,功耗比dialog稍微高一点点,这两个都是m0内核的算是个趋势吧,ti现在出的2640也是同类系列的,相比2540而言无非是这个出来很久资料多市场占有会大一些。 很多后来者选型都很少选择2540这种老产品的,优势还是有的,stack经过市场验证,可惜内部资源确实够呛,原厂维护起来也有点吃力,新的stack都没法适应 4.0+。 NXP的QN系列算是收购来的,用的人不多。其他的厂家没有接触过不做评论了。 从我接触各个厂家的sdk来看,外设应该不是问题,stack坑还是有的,对于你以前搞手机开发应该接触上层的偏多,应该不是个问题。低层还是少接触好,太累(:  也没啥技术可言。   详情 回复 发表于 2016-12-22 11:49
点赞 关注
 

回复
举报

359

帖子

9

TA的资源

一粒金砂(高级)

沙发
 
可以改HAL,但是最好不要这样做。自己可以做一部分,引用一下,会更容易。
此帖出自无线连接论坛
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
谢谢fyaocn。刚才看了一下developer guide文档的chapter 6,说:When developing with a different hardware platform, you might need to modify the HAL source for compatablility.
我觉得TI给的HAL的介绍太少了,我是看过CC254X user guide文档很多遍的,转到BLE这边来就有些蒙了。
此帖出自无线连接论坛
 
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

4
 
这个都不是问题吧
copy一个hal函数改一下或者直接放在app层
这样便于后期stack升级维护
此帖出自无线连接论坛

点评

怎么直接放在APP层呢?比如Hal_led中用了P1_0, P1_1, P1_4,我可能想用其他端口作为LED,而这几个端口用于其他目的,我应该怎么方便修改呢?那个Hal_key占用的端口就更多了,情况更复杂。 我真的很奇怪,TI的HAL层  详情 回复 发表于 2016-12-19 15:00
个人签名电工
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(中级)

5
 
lyzhangxiang 发表于 2016-12-19 12:22
这个都不是问题吧
copy一个hal函数改一下或者直接放在app层
这样便于后期stack升级维护

怎么直接放在APP层呢?比如Hal_led中用了P1_0, P1_1, P1_4,我可能想用其他端口作为LED,而这几个端口用于其他目的,我应该怎么方便修改呢?那个Hal_key占用的端口就更多了,情况更复杂。
我真的很奇怪,TI的HAL层设计者是怎么考虑这个问题的?他不是想别人的硬件配置也跟他们的一样不变吧?
此帖出自无线连接论坛

点评

有bsp_board_cfg.h这种文件的 ti的是给你参考的,按照他的样子自己定义一套 这个是必须的 另外感觉你还不太熟悉这个东西哦,不好交流 hal可以理解为driver层 也是给你参考的,可以直接用也可以cpoy一份修改,看你  详情 回复 发表于 2016-12-19 15:13
 
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

6
 
chenmgdmc 发表于 2016-12-19 15:00
怎么直接放在APP层呢?比如Hal_led中用了P1_0, P1_1, P1_4,我可能想用其他端口作为LED,而这几个端口用 ...

有bsp_board_cfg.h这种文件的
ti的是给你参考的,按照他的样子自己定义一套 这个是必须的
另外感觉你还不太熟悉这个东西哦,不好交流
hal可以理解为driver层 也是给你参考的,可以直接用也可以cpoy一份修改,看你用了
都可以的  不用纠结
此帖出自无线连接论坛

点评

多谢你的回复。我确实是不太熟悉BLE这一套东西,但我确实是看过了几遍CC254X芯片的user guide,对芯片的硬件有一定的了解,本以为需要自己控制IO, 写中断服务例程等等,结果仔细一看,发现站在OSAL上看底层硬件,隔  详情 回复 发表于 2016-12-19 15:50
个人签名电工
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(中级)

7
 
lyzhangxiang 发表于 2016-12-19 15:13
有bsp_board_cfg.h这种文件的
ti的是给你参考的,按照他的样子自己定义一套 这个是必须的
另外感觉你还 ...

多谢你的回复。我确实是不太熟悉BLE这一套东西,但我确实是看过了几遍CC254X芯片的user guide,对芯片的硬件有一定的了解,本以为需要自己控制IO, 写中断服务例程等等,结果仔细一看,发现站在OSAL上看底层硬件,隔了一层HAL,一个简单的Key控制都不知道在哪里开的中断,中断服务程序在哪里,还不如抛开hal,自己直接写底层的硬件程序,可问题是OSAL和HAL又纠缠在一起了,还甩不掉这个hal。比较郁闷,看来需要花时间把这个hal好好研究一下。
此帖出自无线连接论坛

点评

花点时间自己折腾一下 osal相关的还是用上吧,有必要 毕竟是sdk,比自己写裸机简单多了  详情 回复 发表于 2016-12-19 15:58
 
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

8
 
chenmgdmc 发表于 2016-12-19 15:50
多谢你的回复。我确实是不太熟悉BLE这一套东西,但我确实是看过了几遍CC254X芯片的user guide,对芯片的 ...

花点时间自己折腾一下 osal相关的还是用上吧,有必要
毕竟是sdk,比自己写裸机简单多了
此帖出自无线连接论坛
个人签名电工
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(中级)

9
 
花了2天看了HAL层的模块代码,确实存在我之前担心的问题,HAL层把硬件掩盖起来想把问题简化,但实际上却产生新的问题,举个简单的例子:假设你想用hal_key的同时又想用hal_uart_spi,你会发现不能用usart0做spi。如果不是对HAL底层很熟悉的话,你根本就会抓瞎了。如果是你从底层写代码的话,就不会存在这样的问题。
如果有人像我一样对HAL不熟悉,但对单片机硬件编程有一定经验的话(比如我之前写过msp430的硬件代码),一个建议就是在options中把不要的hal都关掉,比如hal_key,hal_led,hal_uart。然后自己写代码(中断什么的自己定,清清楚楚明明白白),需要应用层响应的,就直接给APP Task发送消息。
还请高手们多指教。
此帖出自无线连接论坛

点评

首先你得针对你的板子外设定义broad_bsp_cfg.h 具体可能不是这个名称,很久没弄了 如果不是系统的熟悉这个osal周边相关的话,确实有你说的问题 不过对于一般懂裸机的人也就一两天的时间,看看就熟悉了,没多少问  详情 回复 发表于 2016-12-21 19:45
 
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

10
 
chenmgdmc 发表于 2016-12-21 11:24
花了2天看了HAL层的模块代码,确实存在我之前担心的问题,HAL层把硬件掩盖起来想把问题简化,但实际上却产 ...

首先你得针对你的板子外设定义broad_bsp_cfg.h
具体可能不是这个名称,很久没弄了
如果不是系统的熟悉这个osal周边相关的话,确实有你说的问题
不过对于一般懂裸机的人也就一两天的时间,看看就熟悉了,没多少问题
总之,这个东西不是让你重复发明轮子的,慢慢的你会了解这个比你自己写方便
因为是sdk考虑到官方会迭代,得定期看官方得relase note,决定是否需要更新到最新的

还是花点时间理一下逻辑吧,定义好了不存在你说的外设冲突的
此帖出自无线连接论坛
个人签名电工
 
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

11
 
多说一句,这玩意外设很重要么
应该是stack本身更有必要去看看他的一些约定的东西,毕竟是调用api
只有遵守,否则很容易掉坑的,感觉外设根本不是事,还是你太新手了
做这行几年了
此帖出自无线连接论坛
个人签名电工
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(中级)

12
 
那个文件叫hal_board_cfg.h。硬件冲突的问题我尝试着慢慢摸索吧。

关于协议栈的部分,感觉东西不多,就那么几个套路:write, read, notification和indication。每个service照着官方文档实现好(很多TI都有现成的),应用层提供相应的回调函数和事件处理,基本应该没有问题。我现在尝试着自己定义一些service来实现我们自己的应用需要。

BLE协议说来说去都是比较固定的东西,而外设部分就会随着具体应用不同而不同,玩不转外设就谈不上应用了。

我本来是做手机开发和信号处理的。单片机去年才接触msp430,蓝牙BLE就没人懂,所以只好自己来填这个坑了。

多谢你的指点。能不能请你谈一谈蓝牙方面一些新的,以后值得花时间搞的东西。比如说我看市面上很多产品用的是德国的dialog芯片,这个你了解吗?
此帖出自无线连接论坛

点评

好的 , 只能简单说说我的一点认识,多交流下 dialog这个功耗很低,蛮多大厂再用的,带OTA区域要是量产产品很方便体积可以做的很小,基本上算是业界最小了,我了解过来的。前期开发需要加外部flash体积下不去。  详情 回复 发表于 2016-12-22 11:49
 
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

13
 
chenmgdmc 发表于 2016-12-22 05:59
那个文件叫hal_board_cfg.h。硬件冲突的问题我尝试着慢慢摸索吧。

关于协议栈的部分,感觉东西不多,就 ...

好的 , 只能简单说说我的一点认识,多交流下

dialog这个功耗很低,蛮多大厂再用的,带OTA区域要是量产产品很方便体积可以做的很小,基本上算是业界最小了,我了解过来的。前期开发需要加外部flash体积下不去。

nordic系列的基本上算是最容易上手的,功耗比dialog稍微高一点点,这两个都是m0内核的算是个趋势吧,ti现在出的2640也是同类系列的,相比2540而言无非是这个出来很久资料多市场占有会大一些。

很多后来者选型都很少选择2540这种老产品的,优势还是有的,stack经过市场验证,可惜内部资源确实够呛,原厂维护起来也有点吃力,新的stack都没法适应 4.0+。

NXP的QN系列算是收购来的,用的人不多。其他的厂家没有接触过不做评论了。

从我接触各个厂家的sdk来看,外设应该不是问题,stack坑还是有的,对于你以前搞手机开发应该接触上层的偏多,应该不是个问题。低层还是少接触好,太累(:  也没啥技术可言。

此帖出自无线连接论坛
个人签名电工
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(中级)

14
 
你的经验真丰富。再问两个问题:1、是不是只要是BLE,就是相互兼容的,比如4.0的手机和4.1的外设能连接和通信吗?2、你说stack有坑,能具体说一下有什么坑呢?你说做底层,不会是自己照着specification写stack吧?
此帖出自无线连接论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表