历史上的今天
返回首页

历史上的今天

今天是:2025年01月18日(星期六)

正在发生

2020年01月18日 | ARM 启动代码笔记

2020-01-18 来源:eefocus

1、汇编启动代码之看门狗

    看门狗其实就是一个定时器,硬件上就是SOC内部的一个内部外设

    看门狗不用分析原理图,

    关键性操作寄存器

    WTCON(xE270_0000) bit5 是开门狗的开关  1代表开,0代表关


2、汇编写启动代码之设置栈和调用C语言1

   1、C语言运行需要和栈的意义

      “C语言运行需要” 需要一定的条件,这些条件都是由汇编提供的。

      C语言运行需要栈

      栈的特点:自动进入,自动退出,C语言的局部变量,都是在栈中运行的。

      如果我们汇编部分没有给C设置 合理的栈地址,那么C语言中的局部变量地址就会螺孔,整个程序就死掉了。


   2、CPU模式各模式下的栈

      每种模式下都有自己独立的sp寄存器(sp),为什么这么设计?

      如果各个模式都使用用一个寄存器SP,那么就意味做成个程序都是一个栈,如果你的应用程序一旦出错,(譬如栈溢出),就会连累操作系统的栈。


      解决方案,各个模式下使用不同的栈,操作内核使用自己的栈,每个应用程序也使用自己独立的栈,这样各设置各的,一个损坏不会连累其他。

      

      系统复位后,默认是进入SVC模式

      如何访问SVC模式下的栈?

        先将模式设置为SVC,再直接操作SP。


   3、查阅文档并设置栈指针至合法位置

        栈必须是当前可用的一段内存地址

        当前CPU刚复位,外部SRAM尚未初始化,目前可用内存只有内部的SRAM。(因为他不需要初始化即可使用),

        SVC Stack 1.5k D0037780---D0037D80

        栈有4中:

            满减栈

            满曾栈

            满栈: 进栈:先移动指针,再存 出栈:先出数据,再移动指针

            空减栈

            空曾栈 :进栈:先指针向下移动,再存 处栈:指针先上移动

            在ARM中,ATPCS(ARM关于程序应该怎么实现的规范)要求使用满减栈

            结iROM_application_note 中的menory map


    4、汇编语言和c 语言的互相调用

            吧 cfunction

3、    汇编写启动代码之设置栈和调用C语言2

     1、C函数的表写和被汇编语言调用

     在工程中新建并且添加一个C语言的源文件,

4、 汇编写启动代码之开启icache

    1、什么是cache ,有什么用

       cache是一种内存,叫高速缓存

       从容量来说 CPU < 寄存器 < cache < DDR

       从速度来说 CPU > 寄存器 > cache > DDR

       210内部有32kB ichche 和 32KB dcache ,ichche 是用来缓存指令的;dcache 是用来缓存数据的。

       CPU是不能读内存的,需要通过寄存器中转。

    2、iROM中BL0对cache操作

        mrc p15,0,r0,c1,c0,0;            // 读出cp15的c1到r0中

        //bic r0, r0, #(1<<12)            // bit12 置0  关icache

        orr r0, r0, #(1<<12)            // bit12 置1  开icache

        mcr p15,0,r0,c1,c0,0;

推荐阅读

史海拾趣

ESS [ESS Technology,Inc]公司的发展小趣事

ESS的创始人陈兆良是一位具有远见卓识的领导者。他不仅带领公司成功转型,专注于个人电脑音频技术,还推动了公司向更广泛的半导体芯片领域发展。陈兆良凭借其在半导体语音芯片领域的深厚造诣,一度夺得了全球80%的市场份额,被誉为“数码音频和视频之父”。他的领导才能和对市场的敏锐洞察力为ESS的成功奠定了坚实基础。

BEI Sensors公司的发展小趣事

Beckhoff Automation GmbH公司成立于1953年,总部设立在德国Verl市。公司自创立之初,便致力于工业自动化产品的研发与生产。在创始人的领导下,公司逐步建立起一套完整的工业自动化产品体系,包括工业PC、现场总线模块、驱动产品等。凭借卓越的产品质量和创新的技术理念,Beckhoff在行业内逐渐崭露头角,赢得了客户的广泛认可。

Aerovox Corporation公司的发展小趣事

Beckhoff Automation GmbH公司成立于1953年,总部设立在德国Verl市。公司自创立之初,便致力于工业自动化产品的研发与生产。在创始人的领导下,公司逐步建立起一套完整的工业自动化产品体系,包括工业PC、现场总线模块、驱动产品等。凭借卓越的产品质量和创新的技术理念,Beckhoff在行业内逐渐崭露头角,赢得了客户的广泛认可。

DDK公司的发展小趣事

DDK公司在发展过程中,始终牢记社会责任,积极履行企业公民的义务。公司积极参与公益事业,关注环境保护和社会发展,为社会做出了积极贡献。同时,DDK公司还积极推动行业健康发展,与同行企业共同维护市场秩序和公平竞争环境。这种社会责任的担当,让DDK公司在电子行业中树立了良好的企业形象。

HEC Inc公司的发展小趣事

在电子行业中,产品质量是企业生存和发展的关键。DDK公司深知这一点,因此始终将产品质量放在首位。公司建立了严格的质量管理体系,从原材料采购到产品生产、检测的每一个环节都严格把控,确保每一件产品都符合高标准、严要求。这种对品质的执着追求,让DDK公司的产品在市场上赢得了良好的声誉,赢得了消费者的信任和忠诚。

长江微电(cjiang)公司的发展小趣事

2022年8月,美国商务部出台了一项断供禁令,禁止向中国出售用于芯片设计的特定类型的EDA软件。这一制裁措施对中国的半导体行业造成了巨大冲击。然而,长江微电并未因此气馁,反而借此机会加大了对电感产品的研发力度。通过自主创新,公司成功开发出了一系列高性能、高品质的电感产品,满足了国内外客户的需求。这一成就不仅彰显了长江微电应对国际制裁的勇气和智慧,也为中国半导体行业的发展注入了新的活力。

问答坊 | AI 解惑

ucos/2经典中文教程

我做毕业论文时导师给我的,很好的哦,跟大家分享一下.…

查看全部问答>

有个问题,能帮我解决的现金酬谢

有哪位兄台知道如果利用AT命令控制短信猫设备拨打USSD号码:如:*111*222×NNN#这样的号码。 如果有成功实现过的请和我联系。QQ:61238333.如果能帮我解决问题。现金200元酬谢。…

查看全部问答>

opc开发是遇到一个问题,请大家帮帮,在此先谢谢了

Set Server = New OPCServer ’生成OPC对象,     Servers = Server.GetOPCServers(\"\") Server.Connect sServerName, \"\" ’连接OPC服务器     Server.OPCGroups.DefaultGroupUpdateRate = 800’设定组的刷新速率   ...…

查看全部问答>

外部RAM问题

本帖最后由 dontium 于 2015-1-23 13:29 编辑 在一批2812的电路板焊好后,发现绝大部分板子程序不能LOAD到外部RAM,其原因可能是啥,是外部RAM坏吗,DSP坏. …

查看全部问答>

请教看程序大小

430烧入程序是text.d43吧 看程序的大小是用仿真器看程序的起始跟结束段吗? 还是看text.d43文件的大小呢? 或是其他办法…

查看全部问答>

常用模块电路集

一些常用模块的论述,大家学习下。…

查看全部问答>

uCOS-II的中文注释

这是我分享的一个uCOS-II的源代码中文注释的资料,很不错,希望对需要的人有所帮助,有些人传一些资料,还得售价,哎,一点共享贡献意识也没有啊 这个不是邵贝贝的,邵的那个我会传的,放心都是不要“钱”的…

查看全部问答>

浅谈MSP430 系列与89C51 系列的比较

我国的多数读者对89C51 系列的单片机是很熟悉的,为了加深对MSP430 系列单片机的认识,我们不妨将两者进行一下比较。 描述:MSP430VS AT89C51 图片:MSP430VS AT89C51 .jpg 首先, 89C51 单片机是8 位     单片机。其指 ...…

查看全部问答>

12864在画波形时清屏特慢

做了一个12864驱动的心跳监测系统,每次扫过128位后清屏,要用近1秒才能完成,请高手指教一下,你们是不是也碰上类似的问题?…

查看全部问答>