博客首页 | 排行榜 |

马建辉

没有版权,欢迎转载, 功德无量。

个人档案
博文分类
一种嵌入式软件版本信息获取方法设计与实现  2013-09-03 10:43
分享到:

 摘要:为了定位嵌入式设备当前运行软件的版本,设计了一种获取嵌入式软件版本信息的方法,首先设计电路实现按键检测和LED驱动复用IO脚,当IO脚为输入方向时,通过IO状态的读取可以检测按键的按下和弹起状态,当IO脚为输出方向时,可以设置高低电平实现LED的亮灭控制。具体应用时,首先设置IO脚为输入方向,周期检测按键操作,检测到有效的按键按下操作后,当按键弹起时将IO脚设置为输出方向,以PWM的方式驱动LED,通过不同的闪烁频率、间歇时间和闪烁次数进行软件版本的显示。

关键字:软件版本;按键检测;管脚复用;PWM

 

引言:

在嵌入式软件的开发阶段,需要经过多次设计迭代并进行充分测试以提高软件可靠性和完善产品性能。采用软件版本的形式对设计过程建立里程碑,以版本标号的形式对各个软件版本进行标识和区分,然后在计算机上以文档管理的形式或者通过专业的版本控制工具对各个版本软件的源代码及其二进制文件进行整理及控制是一种有效的软件开发管理方式并已被广泛采用[1]。在开发过程中,为了提高设计效率,开发和测试并行进行,为了测试缺陷、查找缺陷原因或定位缺陷的引入时间,可能需要对不同版本的软件进行测试。当测试出某个缺陷后,需要定位当前运行软件的版本号进行进一步分析,由于硬件版本的相对固定性,无法通过检查硬件电路的手段来判断当前运行软件的版本,如果软件本身包含版本信息,通过一种手段从软件中获得版本信息,便可以解决上述问题。本文通过采用预留的MCU IO管脚进行软件版本的获取,通过在单个IO管脚上实现按键检测与LED驱动的复用[2],按键触发嵌入式设备输出当前软件版本信息,设备以特定方式LED脉冲闪烁的表现形式输出版本信息。这种方式避免了对代码二进制文件的专业分析和数据查找,可以高效直观得在测试现场获取版本信息,而且因为其简单易实现、占用资源少,在嵌入式设备领域具有广泛的适用性。

1设计思路

嵌入式设备的软件版本标号采用带小数点的浮点数形式,格式为X.YXY的取值区间为[0,9],共计可包含0.1-9.999个版本,由于浮点数运算存在误差[3],每次软件定版时,在非易失性存储器中存储一个取值区间为[1,99]的整型常量VERSION来表示版本号, VERSION = (X.Y) * 10,从版本号常量VERSION中提取XY的计算公式如下:

X = VERSION / 10                                                        (1-1)

Y = VERSION % 10                                                        (1-2)

X等于版本号常量除以10的模,Y等于版本号常量除以10的余数。

设计电路实现按键检测和LED驱动复用IO脚,当IO脚为输入方向时,通过IO状态的读取可以检测按键的按下和弹起状态,当IO脚为输出方向时,可以设置高低电平实现LED的亮灭控制。具体应用时,首先设置IO脚为输入方向,周期检测按键操作,检测到有效的按键按下操作后,当按键弹起时将IO脚设置为输出方向,以PWM的方式驱动LED,首先以频率为2Hz、占空比为50%PWM形式输出X个周期的方波脉冲,然后间歇3s,以频率为1Hz、占空比为50%PWM形式输出Y个周期的方波脉冲,进行软件版本的显示[4],显示完成后再次设置IO脚为输入方向。

通过在按键按下并弹起后统计3s间歇时间前后的LED闪烁次数,便可以得到XY的数值,软件版本号计算公式如下:

软件版本号 =  x + (y / 10)                                                  (1-3)

2 电路设计

硬件电路包括按键、LED、限流电阻R1和上拉电阻R2四个元件,其电路如图1所示。IO脚设置为输入方向时,按键按下,R1端电压为VCCLED截止处于熄灭状态,由于上拉电阻R2的作用,IO脚电平为高,状态值为1,当按键弹起,R1端电压为0LED截止,IO脚电平为低,状态值为0IO设置为输出方向时,在按键处于弹起状态的条件下,IO电平为高时,LED导通点亮,IO电平为低时,LED截止熄灭,当按键按下时,LED截止熄灭。可选择红、黄、蓝不同颜色的LED,不同颜色LED的导通电压不同,决定所使用的限流电阻R1的阻值也不相同,同时调整R1阻值,可以调节LED灯的亮度[5]

1 硬件电路图

Figure 1 Hardware circuit

3 软件设计

软件设计流程如图2所示。首先设置该IO脚为输入方向,以20ms为周期读取IO状态,正常状态即按键处于弹起状态时,IO状态为0,按下按键时IO状态为1,当检测到IO状态为1时启动对按键的软件去抖处理6,当检测到一次有效的按键按下操作后,按键弹起时设置IO脚为输出方向,开始进行LED的驱动控制。

2 软件设计流程图

Figure 2 Software design flow

LED控制方式如下:

首先根据公式(1-1)(1-2)计算出软件版本号中的XY,然后以频率为2Hz、占空比为50%PWM方式输出X个周期方波脉冲,此时LED周期闪烁,闪烁次数等于X,最后一个周期结束后熄灭LED,然后启动3s间歇定时,定时到达后以频率为1Hz、占空比为50%的方式输出Y个周期方波脉冲,此时LED周期闪烁次数等于Y,最后一个周期结束后熄灭LED,并再次设置管脚为输入方向。

结语

本文通过MCU的单个IO管脚复用实现按键检测及LED驱动,通过按键的方式触发读取软件版本信息操作,避免了复杂的诊断协议和诊断接口,通过LED脉冲闪烁的方式输出软件版本信息,直观方便,电路设计和程序设计简单,占用软硬件资源很少,可以方便地在不同的嵌入式设备上实现,具有广泛的适用性和极强的实用价值。

类别:嵌入式 |
上一篇:基于嵌入式MCU数据Flash的数据存储及管理方法研究与实现 | 下一篇:基于MC9S08SL8的电动汽车仪表盘信号转换器设计
以下网友评论只代表其个人观点,不代表本网站的观点或立场