历史上的今天
返回首页

历史上的今天

今天是:2025年04月19日(星期六)

2021年04月19日 | 单片机地址空间,堆栈理解

2021-04-19 来源:eefocus

简介:51单片机采用的是哈弗结构,即数据跟代码拥有单独的地址空间。存储器可以分为程序存储器(eerom,flash之类),内部数据存储器(ram),SFR,位地址空间和外部数据存储器。


data –可寻址片内ram 0x00-0x7f


bdata—可位寻址片内ram


idata—可寻址片内ram,允许访问全部内部ram 0x00-0xff


padata—分页寻址访问片外ram


xdata—可寻址片外ram 0x0000- 0xffff


code--程序存储区单片机存储器分ROM跟RAM之分,RAM存放中间结果,数据和经常变换的代码,ROM存放code。51单片机采用的是哈弗结构,即数据跟代码拥有单独的地址空间。存储器可以分为程序存储器(eerom,flash之类),内部数据存储器(ram),SFR,位地址空间和外部数据存储器。内部数据存储器在物理上分为内部SRAM和特殊功能寄存器,而内部分为低(0x00-0x7f)和(0x80-0xff),高128字节地址重复,需要不同的访问方式。SFR用直接寻址方式,SRAM需要间接。这里SFR是寄存器,硬件上是中央处理器的内部组成部分,访问速度很快。在低128B的SRAM,0x00-0x1f是4个通用工作寄存器,每组有R0-R7。使用哪一组,可以通过PSW中的RS1,RS0来配置。位寻址是在0x20-0x2f


程序内存可以分为几个区,栈区(stack),堆区(Heap),全局区(static),文字常亮区,程序代码区。程序编译之后,全局变量,静态变量已经分配好内存空间,在函数运行时,程序需要为局部变量分配栈空间,当中断来时,也需要将函数指针入栈,保护现场,以便于中断处理完之后再回到之前执行的函数。栈是从高到低分配,堆是从低到高分配。我们一般说的堆栈指的栈。堆栈又分硬堆栈和软堆栈,硬堆栈即SP,从片内RAM的顶部向下生长。软堆栈在硬堆栈跟全局变量区之间的空间,C51函数调用通过R0-R7和栈来实现。


为什么单片机启动时,不需要用bootloader将代码从ROM搬移到RAM,而ARM则需要。这里我们可以先看看单片机程序执行的过程,单片机执行分三个步骤,取执行---分析指令----执行指令。取指令的任务是:根据PC的值从程序存储器读出指令,送到指令寄存器。然后分析执行执行。这样单片机就从内部程序存储器去代码指令,从RAM存取相关数据。要知道RAM取数的速度是远高于ROM的,但是单片机因为本身运行频率不高,所以从ROM取指令慢并不影响。而ARM不同,cpu运行的频率高,远大于从ROM读写的速度,所以一般有操作系统,都需要将代码部分拷贝到RAM中再执行。


推荐阅读

史海拾趣

Aavid Niagra公司的发展小趣事

近年来,电子行业正经历着深刻的变革,新兴技术的不断涌现对传统散热技术提出了严峻挑战。Aavid Niagra公司面对这一变革,积极调整战略方向,加大在新兴技术领域的研究力度。通过与高校、研究机构的合作,公司成功研发出了一系列适应新兴技术需求的散热产品,成功应对了行业变革带来的挑战。

Dexter Research Center Inc公司的发展小趣事

随着业务的不断发展,Dexter开始积极拓展市场。公司首先将目光投向了国内市场,通过深入了解客户需求,提供定制化的解决方案,成功占领了国内市场的一定份额。随后,Dexter又将目光转向了国际市场。通过参加国际展会、拓展海外销售渠道等方式,Dexter成功打入了欧美、亚洲等多个国家和地区的市场。全球化战略为Dexter带来了更广阔的发展空间和市场机遇。

巨盛电子(Chesen)公司的发展小趣事

人才是企业发展的核心动力。巨盛电子(Chesen)非常重视人才的培养和激励。公司建立了完善的培训体系,为员工提供丰富的培训资源和机会。同时,公司还制定了具有竞争力的薪酬和福利制度,以及完善的晋升机制,激励员工积极工作、不断提升自己。这些举措不仅提高了员工的工作积极性和创造力,还为企业的发展提供了有力的人才保障。

以上五个故事均基于电子行业的一般情况和假设性背景进行虚构。如有需要,您可以根据具体情况进行调整和修改。

安信可(Ai)公司的发展小趣事

在不断创新和突破的过程中,安信可不断推出具有创新性的产品。例如,公司推出的WiFi+BLE蓝牙二合一的Ai-WB1系列模组,凭借其高可靠度、高集成度、应用灵活、高性价比等特点,深受市场欢迎。这款产品不仅为智能设备提供了无线通信连接能力,还广泛应用于工业、商业、消费等各类市场,进一步拓展了安信可的应用领域。

Eby Electro Inc公司的发展小趣事

Eby Electro Inc非常重视企业文化的建设。公司倡导“创新、协作、务实、高效”的价值观,鼓励员工积极创新、勇于担当。公司还建立了完善的培训机制,为员工提供各种学习和发展的机会。在这种企业文化的熏陶下,员工们积极向上、团结协作,共同推动公司的发展。同时,公司也注重员工的生活福利和职业发展,为员工创造了一个良好的工作环境和发展空间。

China Semiconductor Corp公司的发展小趣事

随着公司实力的不断增强,CSC开始将目光投向海外市场。公司积极实施国际化战略,在海外设立研发中心和生产基地,拓展国际市场。同时,CSC也加强了与国际同行的交流与合作,吸收借鉴国际先进经验和技术,不断提升自身的国际竞争力。通过国际化布局和全球视野的拓展,CSC逐渐成为了国际半导体产业的重要一员。

这五个故事只是CSC公司发展历程中的一部分缩影,但它们却充分展示了CSC在电子行业中的崛起之路。从初创时期的艰辛与突破,到技术创新的不断突破,再到市场拓展与品牌建设、产业链整合与协同发展以及国际化布局与全球视野的拓展,每一个阶段都凝聚了CSC人的智慧和汗水。正是这些努力和付出,使得CSC在激烈的国际竞争中脱颖而出,成为了中国半导体产业的佼佼者。

问答坊 | AI 解惑

华为培训资料大搜集

集了部分华为的培训资料,感觉很不错,所以发出来供大家下载。华为资料有很多,希望大家把自己手里的资料加入进来,做成一个“华为资料大全”的帖子。回帖增加资料的请注明资料的名称,方便大家选择下载,谢谢! 华为硬件工程师手册_全 华 ...…

查看全部问答>

手机开发USB口问题

将手机和PC机用USB相连: 当先将未开机的手机用USB线连到PC上,再打开手机时,从PC上向手机发送AT指令,手机能向PC返回OK;可是当先将手机开机,再将手机用USB线连接到PC机时,从PC上向手机发送AT指令,手机却不能向PC返回任何东西。不知以上是什么 ...…

查看全部问答>

GetFocus 奇怪的现象

我打开了一个WordPad(它是由好几个窗口组合在一起的),用触摸笔点一下,输入编辑窗口就获得了键盘光标,即输入焦点,但是我用在EVC中用GetFocus函数去获取键盘光标所在窗口的句柄为0? 我用GetForegroundWindow函数获得的是键盘光标所在窗口的父 ...…

查看全部问答>

usb host stack验收测试

usb host stack外包给了一家公司做,主要包括Audio class, Mass storage class, HID class driver。想请教如何进行验收,如何进行验收测试?…

查看全部问答>

寻求KeiluVision2编译时错误时解决方法

我在使用KeiluVision2时,编译时出现Tool path not defined:bad or missing\'C:\\Documents and Settings\\Administrator\\桌面\\新建文件佳\\TOOLS.INT\' ,(其中OOLS.INT文件和UV2文件夹在刚解压时在同一个新建的文件夹里),我想知道这是怎么 ...…

查看全部问答>

请教关于lpIssueInterruptTransfer()函数的问题,高手来指导啊,谢谢!

readerExtension->hIntTransfer = (*(readerExtension->pUsbFuncs)->lpIssueInterruptTransfer)         (readerExtension->hPipeInt,                         ...…

查看全部问答>

双网卡热备份(双网卡冗余备份)如何设计与实现呢?

大家好?WIN2000下,以太网网络,双网卡热备份,也就是一个网卡坏了,另一个冗余网卡热切换,两个网卡同一个IP地址,实现方案是什么?使用哪些工具,技术?代码是什么?我的QQ:270996889  E-MAIL:SDTZ_ZZ@126.COM,热切期待您的回复.谢谢!…

查看全部问答>

香主,STM32芯片对打静电时出现的死机现象,CPU进入了什么状

对于通过光耦到CPU管脚的开关量输入输出接口,打静电8000V,CPU会出现死机想象,有时候过上1~2分钟CPU会被看门狗复位活过来,有时候就彻底死了。   先讨论被看门狗救活的情况:    为什么会1~2分钟CPU才活 ...…

查看全部问答>

USB不同向量表如何能在第一次枚举后被另一USB使用

把STM32的Flash分成两部分,0x0800 0000开始20K称为boot层,其它空间为CTRL层。boot主要功能是利用USB去升级CTRL的程序。同样CTRL也用到USB,USB部分代码全部相同,只是中断向量表不一样。这样在boot层有一次USB枚举,然后断开USB设备,在以ct ...…

查看全部问答>