彻底搞懂c语言--读完可以逐步成为大神--*(一)

本文通过分析ESP8266 SDK项目,探讨了C语言项目中的目录结构、内存分布(iRAM、dRAM、cache)以及如何为ESP8266编写程序。介绍了ESP8266的硬件特性,如内存空间的分配,并提到了构建脚本和编译过程中的关键步骤,如Makefile和gen_misc脚本的作用。
摘要由CSDN通过智能技术生成

我认同要打好语言的基础,但是很多人死在了学习的许多视频上,因此我们觉得学习github很重要,编程南就是yinwei很多人不喜欢不习惯从项目入手,了解一个项目使用github项目会大大增加我们学习的兴趣,至于基础的东西我觉得看看《c和指针》就非常不错了,再配合廖雪峰的GIthub项目。我相信你也能如鱼得水
但其实还不够,因为我们还有很多的细节不了解,今天我们一起来消灭这些拦路虎。
打开了一个ESP8266 SDK项目,我们以这个例子来分析一个用c语言开发的项目到底包含着些什么东西
装载链接:https://blog.csdn.net/espressif/article/details/78563753
因为程序通常与内存分布息息相关,因此我们就要来对内存有所了解:
esp8266 在物理上有 64KB 的 iRAM,96KB 的 dRAM。
iRAM

instruction RAM,用来存放指令,位于 0x40100000 开始的 64KB 空间。通过文件 eagle.app.v6.ld 我们可以查看到如下信息:

iram1_0_seg : org = 0x40100000, len = 0x8000

1

指定了 iRAM 的起始地址,以及长度。由于部分 iRAM 空间会被用作 cache,因此这里长度为 32 KB。
dRAM

data RAM,用来存放数据,位于 0x3FFE8000 开始的空间。通过文件eagle.app.v6.ld 我们可以查看到如下信息:

dram0_0_seg : org = 0x3FFE8000, len = 0x18000

1

指定了 dRAM 的起始地址,以及长度。
cache

esp8266 sdk 默认将 iRAM 中 0x40108000 开始的 32KB 空间用作 cache,sdk 启动后会将对应的 spi flash 空间映射到 cache 空间。

esp8266 支持多种 cache 映射机制,当前默认的使用的是 1MB + 1MB 的方式。即将 spi flash 中的 0x000000~0x1FFFFF 映射到 0x402000000x402FFFFF,0x1000000x1FFFFF 映射到 0x40200000~0x402FFFFF。

在 esp8266 sdk 中,支持若干种 flash map 方式,有 256KB + 256KB、512KB + 512KB、1024KB + 1024KB。

在 256KB + 256KB 和 512KB + 512KB 两种 map 方式中,user1.bin 和 user2.bin 均在第一个 1MB 空间,因此映射到同一个 1MB 空间:

256KB + 256KB

在 ld 目录查看文件:

eagle.app.v6.new.512.app1.ld
eagle.app.v6.new.512.app2.ld

irom0_0_seg : org = 0x40201010, len = 0x2B000
irom0_0_seg : org = 0x40241010, len = 0x2B000

1
2

512KB + 512KB

在 ld 目录查看文件:

eagl
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值