关于驱动程序与BSP的区别

scutwyz 2012-08-16 10:39:06
很好奇驱动与BSP程序的区别:

(1)stm32中那个函数库(固件库?)属于BSP吗?

(2)BSP需要保证“可重入吗”

(3)驱动程序与BSP的界限如何界定呢?
...全文
3335 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
scutwyz 2012-08-27
  • 打赏
  • 举报
回复
那也需要相同的BSP包嘛。。。。 大概就这样啦,看来BSP的要求不高。。。。在多进程的角度上
BYD123 2012-08-22
  • 打赏
  • 举报
回复
1)BSP是你的板子相关的代码,比如GPIO的配置,I2C连接的设备。同一款CPU,不同的板子也会因为引脚的接法不同,设备上从属设备不一样导致BSP不一样;
2)驱动的话和你的子设备是密切相关的,相同设备在相同软件平台下驱动基本是可以通用的,和板子的关系不是很大的。
scutwyz 2012-08-17
  • 打赏
  • 举报
回复
其实很疑惑啦!
这是stm32常见所提供的两段函数:
(算是BSP吧)
void RCC_AdjustHSICalibrationValue(uint8_t HSICalibrationValue)
{
uint32_t tmpreg = 0;
/* Check the parameters */
assert_param(IS_RCC_CALIBRATION_VALUE(HSICalibrationValue));
tmpreg = RCC->CR;
/* Clear HSITRIM[4:0] bits */
tmpreg &= CR_HSITRIM_Mask;
/* Set the HSITRIM[4:0] bits according to HSICalibrationValue value */
tmpreg |= (uint32_t)HSICalibrationValue << 3;
/* Store the new value */
RCC->CR = tmpreg;
}

很明显,这段代码是可重入的。。。

但是,对于相同的外设,又有另外一段代码:

void RCC_HSEConfig(uint32_t RCC_HSE)
{
/* Check the parameters */
assert_param(IS_RCC_HSE(RCC_HSE));
/* Reset HSEON and HSEBYP bits before configuring the HSE ------------------*/
/* Reset HSEON bit */
RCC->CR &= CR_HSEON_Reset;
/* Reset HSEBYP bit */
RCC->CR &= CR_HSEBYP_Reset;
/* Configure HSE (RCC_HSE_OFF is already covered by the code section above) */
switch(RCC_HSE)
{
case RCC_HSE_ON:
/* Set HSEON bit */
RCC->CR |= CR_HSEON_Set;
break;

case RCC_HSE_Bypass:
/* Set HSEBYP and HSEON bits */
RCC->CR |= CR_HSEBYP_Set | CR_HSEON_Set;
break;

default:
break;
}
}
这个很明显就不可重入;
那么,在进行驱动编写的时候,我该怎么做,把厂家给的BSP全部读一遍,确定哪个是可重入的,哪个不行,然后在有针对地加竞态保护?
还是,不管任何情况,只要涉及到硬件配置,都加竞态保护?

这点非常不理解
zhenghn2010 2012-08-17
  • 打赏
  • 举报
回复
分清 bsp和驱动所起作用的阶段 bsp是保证os启动前所作的必须工作,包括初始化工作,引导os启动起来,也包括一些用户的配置信息。 os启动后,可以认为bsp已经不再起作用了,os会调相应的驱动来重新初始化系统。驱动可以认为是os内核中的一部分。
scutwyz 2012-08-17
  • 打赏
  • 举报
回复
不要沉啊
xgbing 2012-08-16
  • 打赏
  • 举报
回复
不需要
scutwyz 2012-08-16
  • 打赏
  • 举报
回复
还没明白?
那么写BSP时要考虑“可重入性吗”
还是只要能驱动硬件就好。
xgbing 2012-08-16
  • 打赏
  • 举报
回复
BSP是一般是厂家提供的,驱动是自己写的。
scutwyz 2012-08-16
  • 打赏
  • 举报
回复
不要沉啊

21,615

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧