技术笔记20230721 rBoot学习6

技术笔记20230721 rBoot学习6

  继续学习rBoot。前几天看完了rBoot的readme,今天在网上看到了几篇分析rBoot的文章。顺着文章的思路学习一下。

工程创建

  我学习ESP8266使用的系统是windows,所以选择了方便安装与使用的安信可一体化开发工具AiThinker_IDE v0.5。AiThinker_IDE中的ConfigTool使用默认配置。先构建一个rBoot例程项目。分别从git仓库中下载rBoot和esptool2,然后将他们复制到同一文件夹下。我的工程目录是这样的:

.
├── rBoot
├── esptool2

  分别将rBoot与esptool2导入到AiThinker_IDE中。导入时选择Existing Code as Makefile ProjectCygwin GCC。然后先编译esptool2再编译rBoot即可。

分析代码流程

  由于链接脚本中定义的入口函数ENTRYcall_user_start,我们先看一下这个函数的定义。此函数有汇编版本与C语言版本,如rBoot作者所说,使用gcc编译时使用汇编版本的入口函数,而C语言版本的入口函数虽然会占用stack但其他功能与汇编版本相同。C语言更直观,容易理解,下面就看一下C语言版本的call_user_start

// small stub method to ensure minimum stack space used
void  call_user_start(void) {
	uint32_t addr;
	stage2a *loader;
	addr =  find_image();		// 1.找到image的地址

	if (addr !=  0) {
		loader = (stage2a*)entry_addr;		// 2.加载image
		loader(addr);
	}
}

  此函数主要流程为找到image的地址、加载image。那我们继续看一下rBoot是如何找到image地址的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值