OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5958|回复: 11

给stm32写一个bootloader,包含stm32的基本功能,在开机时读取到内部ram运行,用户程序只需通过函数指针调用功能是否可行?

[复制链接]

1

主题

5

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2015-12-6
在线时间
1 小时
发表于 2016-4-27 11:37:40 | 显示全部楼层 |阅读模式
就是给stm32做一个类似于BIOS的基本片上功能和基础外设的固化。
系统上电从flash运行,flash包括bootloader和基本功能的代码还有用户程序。
先从bootloader运行,bootloader负责把基本功能代码加载到ram中,并生成一个类似于中断向量表的基本函数指针表,再将用户程序加载到ram,并将SP指向ram中的用户代码。
用户的基础功能可以通过类似插件的形式添加到系统中去,bootloader拥有IAP功能,主要用于更新用户程序。
用户程序主要是调用基础功能区的函数指针来实现逻辑。
这样可行吗?主要有两个地方的问题,一个是从flash运行的代码能不能再跳转到ram中
另外一个问题就是这样做会不会做到效率上面的提升?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

头像被屏蔽

88

主题

231

帖子

2

精华

高级会员

Rank: 4

积分
844
金钱
844
注册时间
2013-4-11
在线时间
40 小时
发表于 2016-4-27 20:46:21 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2015-12-6
在线时间
1 小时
 楼主| 发表于 2016-4-27 21:47:15 | 显示全部楼层
yklstudent 发表于 2016-4-27 13:12
楼主的要求可以实现,但是数据搬来搬去的,效率不见得就提升了

十分感谢您的回复,我是在考虑简化编程的工作,同时加快IAP的速度。
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2015-12-6
在线时间
1 小时
 楼主| 发表于 2016-4-27 21:48:17 | 显示全部楼层
nonplus 发表于 2016-4-27 20:46
如果你说的类似boot--->app1-->app2
其中app1是在ram运行,那么可以实现
boot启动加载app1到ram然后跳转 ...

谢谢您,您的回复直接帮我屡清了系统的流程,我打算就这么做,专业做轮子
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2015-12-6
在线时间
1 小时
 楼主| 发表于 2016-4-27 21:52:16 | 显示全部楼层
nonplus 发表于 2016-4-27 20:46
如果你说的类似boot--->app1-->app2
其中app1是在ram运行,那么可以实现
boot启动加载app1到ram然后跳转 ...

还有一点不太明白的就是,为什么PC使用的就是这类模式,ARM的A系列也都是这种BootLoader,为什么M系列的大家都习惯裸机编程呢,是因为MMU吗
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2015-12-6
在线时间
1 小时
 楼主| 发表于 2016-4-27 21:52:36 | 显示全部楼层
nonplus 发表于 2016-4-27 20:46
如果你说的类似boot--->app1-->app2
其中app1是在ram运行,那么可以实现
boot启动加载app1到ram然后跳转 ...

我是新手
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2016-4-20
在线时间
6 小时
发表于 2016-4-28 11:27:38 | 显示全部楼层
chenxinhaode@12 发表于 2016-4-27 21:52
还有一点不太明白的就是,为什么PC使用的就是这类模式,ARM的A系列也都是这种BootLoader,为什么M系列的 ...

嗯。虽然也有不需要的MMU的办法,但是不可行。。。
回复 支持 反对

使用道具 举报

4

主题

46

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
308
金钱
308
注册时间
2016-2-3
在线时间
51 小时
发表于 2016-4-28 11:35:51 | 显示全部楼层
坐等楼主分享资料,邮箱:2472892628@qq.com
回复 支持 反对

使用道具 举报

357

主题

1478

帖子

12

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
8120
金钱
8120
注册时间
2015-10-15
在线时间
2927 小时
发表于 2016-4-28 12:52:09 | 显示全部楼层
可以的。请参考我们的IAP实验代码。有讲解过程。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

19

主题

702

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3339
金钱
3339
注册时间
2013-7-30
在线时间
708 小时
发表于 2016-4-28 17:41:37 | 显示全部楼层
chenxinhaode@12 发表于 2016-4-27 21:52
还有一点不太明白的就是,为什么PC使用的就是这类模式,ARM的A系列也都是这种BootLoader,为什么M系列的 ...

跟mmu无关,三星的cpu有BL0、BL1、BL2那是因为这三个阶段都做了不同的工作,BL0主要是芯片上电执行的一段代码,厂家固化的,不能修改。BL1主要是对CPU的一些初始化,还有栈、堆、内存控制器等等。BL2主要是代码重定位,重定位完之后,启动过程就算完成了。单片机不一样,单片机没有那么复杂的外设,或者说,单片机把这个过程都整合在一起了,一般IAP功能,把单片机的内部Flash划分两个区,一个bootloader区,一个APP区
思想很重要,无论做人还是编程!
我的技术公众号【微联智控工作室】
回复 支持 反对

使用道具 举报

5

主题

22

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
378
金钱
378
注册时间
2014-7-27
在线时间
34 小时
发表于 2016-4-29 16:32:27 | 显示全部楼层
mark一下,我也想尝试这方面内容。
something different~
回复 支持 反对

使用道具 举报

头像被屏蔽

88

主题

231

帖子

2

精华

高级会员

Rank: 4

积分
844
金钱
844
注册时间
2013-4-11
在线时间
40 小时
发表于 2016-4-30 08:12:58 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-9 19:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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