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

[复制链接]
发表于 2015-9-26 12:40:55   2532 查看 18 回复 显示全部楼层 倒序浏览
分享
打造基于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编程

驱动库
      驱动库框架

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才能打开
附件

简易的入门概述,

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

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



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
标签:STM32

实习生

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

举报

实习生

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

点赞 举报

技术员

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

点赞 举报

发表于 2015-11-11 18:55:02    楼主|
qwert1213131 发表于 2015-11-11 10:46
已跟朋友弄了2套,支持下

多谢支持!
回复

点赞 举报

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

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

点赞 举报

实习生

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

举报

助理工程师

发表于 2015-11-17 18:37:27  
这个很好,支持下,写程序条程序很痛苦很费事
回复

点赞 举报

等待验证会员

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

点赞 举报

工程师

发表于 2015-11-18 17:04:44  
谢谢分享!谢谢分享!谢谢分享!
回复

点赞 举报

技术员

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

点赞 举报

助理工程师

发表于 2015-11-20 09:29:49  
感谢楼主分享!
回复

举报

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

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

点赞 举报

发表于 2015-11-20 11:32:47    楼主|
2389783674 发表于 2015-11-18 16:08
没看懂但是觉得很强大

多多交流
回复

点赞 举报

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

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

点赞 举报

实习生

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

点赞 举报

实习生

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

点赞 举报

工程师

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

举报

实习生

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

点赞 举报

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

关闭

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

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

推荐专区

技术干货集中营

专家问答

用户帮助┃咨询与建议┃版主议事

工程师杂谈

工程师创意

工程师职场

论坛电子赛事

社区活动专版

发烧友活动

-

嵌入式论坛

ARM技术论坛

Android论坛

Linux论坛

单片机/MCU论坛

MSP430技术论坛

FPGA|CPLD|ASIC论坛

STM32/STM8技术论坛

NXP MCU 技术论坛

PIC单片机论坛

DSP论坛

瑞萨单片机论坛

嵌入式系统论坛

-

电源技术论坛

电源技术论坛

无线充电技术

-

硬件设计论坛

PCB设计论坛

电路设计论坛

电子元器件论坛

控制|传感

总线技术|接口技术

-

测试测量论坛

LabVIEW论坛

Matlab论坛

测试测量技术专区

仪器仪表技术专区

-

EDA设计论坛

multisim论坛

PADS技术论坛

Protel|AD|DXP论坛

Allegro论坛

proteus论坛|仿真论坛

EasyEDA-中国人自已的EDA工具

Orcad论坛

-

综合技术与应用

电机控制

智能电网

光电及显示

参考设计中心

汽车电子技术论坛

医疗电子论坛

-

开源硬件

-

无线通信论坛

无线通信技术专区

天线|RF射频|微波|雷达技术

-

IC设计论坛

芯片测试与失效分析

Mixed Signal/SOC[数模混合芯片设计]

Analog/RF IC设计

设计与制造封装测试

-

厂商专区

TI论坛

TI Deyisupport社区

-

检测技术与质量

电磁兼容(EMC)设计与整改

安规知识论坛

检测与认证

-

消费电子论坛

手机技术论坛

平板电脑/mid论坛

音视/视频/机顶盒论坛

-

电子论坛综合区

聚丰众筹官方社区

新人报道区

聚丰供应链

-

论坛服务区

-

供求信息发布

供需广告

招聘┃求职发布区

电子展览展会专区