发 帖  

[经验] 【eBox生态圈】连载二:打造基于STM32的eBox生态圈,初识eBox全面貌

2015-9-26 12:40:55  2779 STM32
收藏 2 收藏 推荐 0 推荐
分享
打造基于STM32的eBox生态圈,解放STM32编程!

什么是eBox
eBox是一个运行在STM32平台上的涵盖了驱动层、系统层、标准应用软件层、用户软件层和bootloader的软硬件一体化的解决方案。丰富的标准驱动和标准应用,像用Arduino那样方便,性能又远高于arduino。操作系统的支持让eBox满足多任务系统的需求;标准应用为你提供多种控制算法、通信协议,满足不同应用场所的需求

程序框架

程序架构

OS:操作系统。完美支持自带操作系统。其他操作系统需要修改特殊位置。

eBox外设固件库:是指eBox核心代码,用户拿到的lib文件和相关头文件

松散耦合:是指在使用操作系统的情况下的一些要简单处理的逻辑关系。在后面的章节中有详细介绍

驱动程序:是指芯片的基本读写控制驱动

标准应用程序:是指在基本的驱动上实现了相应的应用功能,比如在w5500上实现的网络应用协议,在mmc_sd驱动上实现的文件系统等等。这一部分不是必须的用户可以根据自己的需求,选择是否使用。

应用程序:是指需要用户编写业务逻辑关系处理程序。

注解:

   os部分:eBox是独立的一套代码,兼容操作系统,但不基于操作系统。所以操作系统是可有可无的,根据用户的需求来适当的使用或者不使用。


编程语言

eBox是基于c/c++编程实现的。需要学习简单c/c++的语言知识。

在ebox中涉及c++部分的知识点有:

类和对象

成员变量

成员函数

友元函数

引用


eBox外设固件库的优势
外设固件库主要是实现了官方标准固件库V3.5的重新封装。主要以c++编程语言来实现封装。对外接口基本是以外设描述性质的参数去初始化,所有外设具有较为统一的调用方法。具体可参考API手册。方便用户的编程,便于后期驱动的编写。是eBox的核心部件,是标准化编程的基础,以此为基础拓展出来的芯片驱动层将有这高度兼容性和可移植性。为eBox生态圈的建立打下了根基。
eBox外设固件库只是eBox的核心组件之一,再配合其他部分将让你用最短的时间实现所有底层的调试工作。

性能和效率
中间层越多效率越低这是一个不可避免的问题。为了避免效率的折扣,本连接件对只需执行一次的初始化函数为了方便用户的配置,使用了复杂的代码过程,速度相对较固件库慢一点,对于读写等需要多次重复的函数有很大的优化处理,第一使用DMA比如串口、ADC。第二,跳过官方库,直接读写寄存器。第二、很多函数提供了多种处理函数,尽可能的提高执行效率。比如GPIO的操作,如果使用set和reset的函数来操作io,生成的汇编指令只有三条,能实现和官方库函数一样的效果,那为什么不直接使用官方库而要使用你这个函数,当你读完这篇文章后也许你会有你的选择。

时钟相关参数
    由于内部相关延时函数目前只在72Mhz的主频下作了调试,systick配置为8分频,溢出值为SysTickOverFlowValue(SysTickOverFlowValue)。这两个值配置主要影响的是delay_ms()和delay_us()。没有完美支持任意频率,请在使用的时候将系统时钟设置为72Mhz。否则延时函数将会不准或者进入硬件错误。
     如果修改SysTickOverFlowValue的值,将会影响delay_us()的最大延时时间。配置为9000时最大延时时间为999us。配置为900时,最大延时时间为99us。具体算法为max=(SysTickOverFlowValue*1000)/9000- 1;
     使用操作系统的情况下
     #define SysTickOverFlowValue (9000000/OS_TICKS_PER_SEC)可根据上面公式计算delay_us的最大值。使用过多的delay_us会导致系统的时实行降低。
建议用户不去修改此部分代码。使用默认配置即可。目前由于核心部件提供的是lib形式的,无法修改这个配置

内存开销
工程建立完成后内存占用3.2k。
添加官方固件库后使用1.6k左右。继续添加ebox固件库后内存占用为rw-data908字节,zi-data2356字节,这是因为固件库内部声明了一些全局变量例如中断函数的回调函数指针列表。c++的类如果不实例化即不创建对象是不占用内存的。所以占用内存的只有实例化的对象和lib库中的全局变量,降低内存占用的方法可以删除object.cpp中的不使用用的GPIO、spi、i2c、usart对象,同时删除eBox.h中的extern声明和宏定义,重新编译即可,此时内存占用率会大大降低。可以使用sizeof(对象)来查看对象占用的内存情况。

操作系统的支持
eBox是可以独立使用的完整的组件,独立于操作系统,用户如果需要使用操作系统,可用户可参考《eBox编程指南》相关章节。
本套完整的解决方案中有自带的简单的操作系统。使用官方的操作系统无需任何兼容性修改既可添加使用。使用其他的操作系统需要部分兼容性修改。目前官方没有对其他操作系统做出相关兼容性的配置,会在后期的版本中逐渐增加相关代码。

Bootloader的支持
任何应用程序都可以支持bootloader的引导启动。在stm32中如果想让自己的应用程序通过某个bootloader引导启动,需要做相应的设置,并生成bin文件即可用自己喜欢的bootloader来引导启动。详见《eBox编程指南》。
eBox外设库支持列表
       ●数字IO,PA0-PG15所有引脚
       ●ADC1的16个通道,CH1-16
       ●通用定时器TIM2、3、4的定时中断
       ●高级定时器TIM1的定时中断
       ●12路PWM
       ●16通道的外部中断,可影射所有引脚
       ●硬件SPI1、2
       ●硬件I2C1、2
       ●软件SPI,支持任意IO配置
       ●软件件I2C,支持任意IO配置
       ●串口,支持USART1、2、3
       ●实时时钟RTC
       ●内部flash编程

驱动库
      驱动库框架
QQ截图20151106114854.png
eBox驱动是eBox固件最大的亮点,在用户下载标准的eBox驱动后只需做简单的IO连接、通信接口连接即可,不需要做何寄存器相关的任何修改即可将驱动程序移植到本地。从根本解决了STM32驱动移植性差的根本问题,大大降低用户驱动开发、调试难度。
目前提供的驱动:
●74HC595串入并出转换芯片驱动
●独立按键(作者认为非常好使的按键程序)
●编码器按键驱动
●LCD1602显示器驱动
●Nokia5110显示器驱动
●DS3231实时时钟驱动
●MPU6050飞控必备的6轴传感器驱动
●L3G4200D三轴数字陀螺仪驱动
●LSM303DHLC三轴电子罗盘驱动
●AT24C02存储芯片驱动
●W25X16系列spi flash存储芯片驱动
●W5500网络控制器驱动
●SD/TF卡驱动
●三基色LED驱动,支持HSV、HSL调色。
●WS2812单线最牛三基色LED控制器,内部自带gamma校正,软件支持HSV、HSL调色。
这个会不断的更新。
标准应用库
●网络通信
●文件系统
●色彩控制器
●日历服务

这个会随着应用的增加不断扩充
工程模板
MDK5的工程模板,需要用mdk5才能打开
附件
工程样板.rar (1.4 MB, 下载次数: 89)

简易的入门概述,
1.ebox概述入门.pdf (393.84 KB, 下载次数: 92)

持续更新中。。。
敬请关注

我的众筹项目地址:http://z.elecfans.com/30.html 期待大家一起来完善和发展eBox,打造国人自己的库,不仅仅支持STM32,更能支持飞思卡尔MCU、NXP MCU······



qwert1213131 2015-11-11 10:39:28
这个得支持啊,好东西
回复

举报

qwert1213131 2015-11-11 10:46:59
已跟朋友弄了2套,支持下
回复

举报

cat_li 2015-11-11 13:44:43
楼主要给力,多放些资料教程
回复

举报

ebox生态圈 2015-11-11 18:55:02
qwert1213131 发表于 2015-11-11 10:46
已跟朋友弄了2套,支持下

多谢支持!
回复

举报

ebox生态圈 2015-11-11 18:55:46
cat_li 发表于 2015-11-11 13:44
楼主要给力,多放些资料教程

资料会慢慢的更新上来!完整的生态系统,正在建设中,服务于工程师,让工程师脱离调试驱动的苦海!
回复

举报

ljty1980 2015-11-17 12:55:53
学习,,,,学习,,,谢谢分享
回复

举报

小猪猪加速 2015-11-17 18:37:27
这个很好,支持下,写程序条程序很痛苦很费事
回复

举报

2389783674 2015-11-18 16:08:34
没看懂但是觉得很强大
回复

举报

纯纯四木 2015-11-18 17:04:44
谢谢分享!谢谢分享!谢谢分享!
回复

举报

天之玄幻 2015-11-19 23:10:05
集成度越高,灵活性会降低,一般都是根据通用性需求来确定吧,毕竟片上资源还是有限。楼主辛苦了,这种工程需要考虑比较细致
回复

举报

愚姬嗳霸王 2015-11-20 09:29:49
感谢楼主分享!
回复

举报

ebox生态圈 2015-11-20 11:32:36
小猪猪加速 发表于 2015-11-17 18:37
这个很好,支持下,写程序条程序很痛苦很费事

是的。没有很好的继承,就无法更快的发展
回复

举报

ebox生态圈 2015-11-20 11:32:47
2389783674 发表于 2015-11-18 16:08
没看懂但是觉得很强大

多多交流
回复

举报

ebox生态圈 2015-11-20 11:33:49
天之玄幻 发表于 2015-11-19 23:10
集成度越高,灵活性会降低,一般都是根据通用性需求来确定吧,毕竟片上资源还是有限。楼主辛苦了,这种工程需要考虑比较细致

是的,易用程度和灵活程度在一定条件下是略有冲突的
回复

举报

yuanruizhang 2015-12-9 19:03:12
正在学习用C++开发单片机呢
回复

举报

liupdeng 2015-12-10 22:48:17
要是全用C编写的还想关注一下。
回复

举报

zts329547875 2015-12-25 11:23:41
支持原创,支持国产
回复

举报

gugude1026 2016-4-12 11:08:07
stm32 的cubemx 用起来挺好啊 楼主干嘛还要再弄呢。是不是为了通用所有公司的cpu呢?
回复

举报

评论

高级模式
您需要登录后才可以回帖 登录 | 注册

发经验
关闭

站长推荐 上一条 /9 下一条

快速回复 返回顶部 返回列表