LED裸程序

发布者:Huixin8888最新更新时间:2018-04-15 来源: eefocus关键字:LED  裸程序 手机看文章 扫描二维码
随时随地手机看文章

实验的目的:
点亮一盏LED灯

实验的源程序:
@******************************************************************************
@ File:crt0.S
@ 功能:通过它转入C程序
@******************************************************************************       
.text
.global _start
_start:
            ldr     r0, =0x53000000     @ WATCHDOG寄存器地址
            mov     r1, #0x0                     
            str     r1, [r0]            @ 写入0,禁止WATCHDOG,否则CPU会不断重启
            
            ldr     sp, =1024*4         @ 设置堆栈,注意:不能大于4k, 因为现在可用的内存只有4K
                                        @ nand flash中的代码在复位后会移到内部ram中,此ram只有4K
            bl      main                @ 调用C程序中的main函数
halt_loop:
            b       halt_loop



@******************************************************************************
@ File:led_on_c.bin
@****************************************************************************** 
#define GPBCON      (*(volatile unsigned long *)0x56000010)  //(volatile unsigned long *)0x56000010这条语句的作用是将0x56000010值强制转化成一个指针,
#define GPBDAT      (*(volatile unsigned long *)0x56000014)  //然后再在这条语句的基础上加上一个*,是取这个指针所指向的值。

int main()
{
    GPBCON = 0x00000400;    // 设置GPB5为输出口, 位[11:10]=0b01
    GPBDAT = 0x00000000;    // GPB5输出0,LED1点亮

    return 0;
}




@******************************************************************************
@ File:Makefile
@****************************************************************************** 

 led_on_c.bin: crt0.S  led_on_c.c
arm-linux-gcc -g -c -o crt0.o crt0.S
arm-linux-gcc -g -c -o led_on_c.o led_on_c.c
arm-linux-ld -Ttext 0x0000000 -g  crt0.o led_on_c.o -o led_on_c_elf
arm-linux-objcopy -O binary -S led_on_c_elf led_on_c.bin
arm-linux-objdump -D -m arm  led_on_c_elf > led_on_c.dis
clean:
rm -f led_on_c.dis led_on_c.bin led_on_c_elf *.o



实验的问题总结:
<1>关于crt0.S文件的解释
      I.若不关闭看门狗,CPU会一直重启
      II.设置堆栈,是因为在C语言中的局部变量会用得到,这可通过反汇编查看得到;思考:在纯汇编中,没有设置堆栈的原因,个人理解的       是,汇编指令操作的对象是寄存器,所以不需要涉及到分配内存的问题。
       III.在 bl main 这个指令,为何不用 .IMPORT main这个伪指令声明main函数,难道汇编程序可以自动通过标号找到main函数?
      答案:准确地来说,是需要的!  
=================================================================================

IMPORT

语法格式:

IMPORT 标号{[WEAK]}

IMPORT伪指令用于通知编译器要使用的标号在其他的源文件中定义,但要在当前源文件中引用,而且无论当前源文件是否引用该标号,该标号均会被加入到当前源文件的符号表中。

标号在程序中区分大小写,[WEAK]选项表示当所有的源文件都没有定义这样一个标号时,编译器也不给出错误信息,在多数情况下将该标号置为0,若该标号为B或BL指令引用,则将B或BL指令置为NOP操作。

使用示例:

AREA Init,CODE,READONLY

IMPORT Main ;通知编译器当前文件要引用标号Main,但Main在其他源文件中定义

……

END

=================================================================================

<2>关于Makefile文件的解释
       I.  -Ttext 0x0000000这条是指定 led_on_c.bin这个程序在内存中运行时的地址
       II.运行地址指的是程序运行时,其所开始执行的的地方称为运行地址;加载地址是指编译整个Makefile之后,得到的 led_on_c.bin这个
      可执行程序所存放的地方的地址称为加载地址。若加载地址和运行地址不在同一处,那么运行时,需要将其从加载地址处搬移到运行地址处,
      这会略微影响CPU的效能。


关键字:LED  裸程序 引用地址:LED裸程序

上一篇:ARM9的存储控制器
下一篇:TQ2440之uboot---6.start.S中relocate部分分析,adr与ldr区别

推荐阅读最新更新时间:2024-03-16 16:00

LED性能检测及白光谱
LED性能检测 类别 测试项目 参考标准 测试条件 持续 时间 实验数 失效数 环境 试验 温度循环 实验 MIL-STD-750D 1051.5 -40℃→25℃→100℃→25℃ 30分钟,5分钟,30分钟,5分钟 100 循环 100 0/100 冷热冲击 实验 MIL-STD-750D 1026 -40℃→100℃ 15分钟,15分钟 50 循环 100 0/100 高温贮存 实验 MIL-STD-750D 1032.1 Ta=100℃ 1000 小时 100 0/100 高湿热存 实验
[电源管理]
<font color='red'>LED</font>性能检测及白光谱
LED相关专利情况分析
  LED行业是一个高进入壁垒的行业,这里指的是上游芯片和外延片,该环节目前占到了整个产业链产值的70%.也正是因为如此,才有了LED专利壁垒的形成。目前全球LED市场由行业前5大厂商掌控,即日本的日亚化学(Nichia)、丰田合成(ToyodaGosei)、美国Cree公司、欧洲飞利浦(PhilipsLumileds) 和 欧司朗(Osram)。这5家厂商为了维持竞争优势、保持自身市场份额申请了多项专利,几乎覆盖了原材料、设备、封装、应用在内的整个产业链。LED厂商间通过专利授权和交叉授权来进行研发和生产,不仅阻碍了新进入者的产生,某种程度上也增加了企业的生产成本。    然而这种专利上的壁垒已经有了松动迹象。因为从1990
[电源管理]
<font color='red'>LED</font>相关专利情况分析
LED发光模组常见故障
  一、现象:所有的LED闪烁。   问题:接触不良。   解决方法:松动处重新固定或接插。   二、现象:LED昏暗。   问题:   1、LED极性接反了。   2、LED太长。   3、开关电源和LED电压标号不一致。   解决方法:   1、确保正、负极接线正确。   2、减少LED的连接。   3、确保开关电源与LED电压标号一致性。   三、现象:部分线路的LED灯不亮。   问题:   1、接插方向是否正确。   2、电源输出接线是否正确。   3、电源线插反、接反。   解决方法:   1、拆出,重新正确方向接插。   2、确保红色线接正极,黑色线接负极。   3、查出部分插
[电源管理]
iPhone8会使用OLED屏么?OLED显示屏究竟有何魅力
    三星是目前全球最大的小尺寸 OLED 显示面板制造商,在移动设备领域 OLED 面板的市场份额高达95%。三星大量生产的 OLED 面板应用于自家的 Galaxy 系列智能手机,占产能比例高达56% 以上,包括 Galaxy S 系列旗舰和 A 系列中档机型。   而在三星的客户中,苹果是目前最大的合作伙伴,其余下订单的手机制造商还有 OPPO、VIVO 等等,客户越多对订单需求的竞争也就越大,产能愈发成为问题。在三星自给自足以及苹果大订单的情况下,未来一年时间里,三星 OLED 显示屏即便开足马力生产,供给其他手机制造商的产能大概只有5000万块左右。   不过,三星内部似乎并不认为供应有问题。近日三星已经开始计划第七代
[电源管理]
国内LED灯具现状可悲 自主创新呼声高
  目前国内LED行业的真正现状用LED路灯行业来举例,大多数企业亏损,而少数不亏损的企业一般都是由于传统业务的支撑。尽管痛苦,但想到中国有一块几千个亿市场的巨大馅饼可以吃到,并且,企业如果包装忽悠得好的话,还可以上市捞一把股民的钱。再考虑到中国政府对未来LED照明的前景从来都没有犹豫过,而且还将出台一系列支持LED照明产业发展的优惠政策和扶持措施,一想到这,这些企业家心里就又美滋滋的。反正中国政府的钱好忽悠,干脆就打肿脸充胖子,继续忽悠,赌下去吧!这就是中国LED灯具照明行业的现状--痛苦的忍着,快乐的幻想着。但却没有认真的去思考:这个痛苦是从哪里来的?如何去消除和减轻这个痛苦?     中国政府在支持LED照明示范上,可以说
[电源管理]
固态高分子电容器应用于LED照明浅析
 一、前言   随着国家提倡“推进节能减排和生态环境保护”的环保观念和《集成电路产业“十二五”发展规划》等一系列拉动LED内需的具体举措集中展开,中国的LED产业必然进入行业格局重整和竞争模式转变的新阶段,其中LED照明以其节约能源的优点成为取代传统灯具的原动力。与传统的灯具光源相比,LED照明具有低工作电压、高效能及定向光等优点。一般而言,LED本身具有超过50,000小时的寿命(白炽灯寿命仅1,000小时),而其电源模块的设计则关系到整体照明设备的转换效能及使用寿命。   LED照明设备是集合电源转换、电子控制器件、光学器件及散热管理等各方面技术的综合解决方案, 整体电源模块皆是以固态元器件组合而成, 其关键零件就是--滤波电容
[电源管理]
固态高分子电容器应用于<font color='red'>LED</font>照明浅析
最强LED照明可靠性测试详解!
作为光源中的新兴力量, led 的发光方式与传统光源截然不同。它是利用 半导体 PN节中的电子与空穴的复合来发光。发光方式的不同决定了LED与传统光源有着本质的区别,也决定了它有自己独特之处。 首先,LED体积小,单颗 大功率LED 芯片的尺寸一般只有1平方毫米,加上外面的封装材料,一颗LED的直径通常只有几毫米,多芯片混光LED由于集成了多颗 LED芯片 ,尺寸略大些。这在照明灯具的外型设计上带来了很高的灵活性,可以将 LED灯具 根据需要做成点状、线状或面光源,也可以根据建筑结构的特点来定制灯具的尺寸,以更好的实现见光不见灯的效果。现代的建筑越来越多的采多玻璃外墙等新型材质,这使得传统的外投光照
[电源管理]
最强<font color='red'>LED</font>照明可靠性测试详解!
电池供电产品的LED控制问题
摘要:白光LED具有使用简单、成本低的特点,其用量在最近几年呈现出稳步上升的趋势,在例携式产品中被广泛用作闪光灯、显示器背光等。本文介绍几种白光LED的驱动方案。 关键词:白光LED 便携式产品 DC-DC转换器 1 概述 LED为电流驱动器件,光输出强度由流过二极管的电流决定。图1是由电压源和限流电阻构成的一种简单偏置电路,流过LED的电流由下式确定:IDIODE=(VCC-VF)/ 这种方式成本较低,但不同的二极管VF(正向电压)的参数一致。图2、图3表示25℃时LED的正向电压(典型值)与导通电流关系曲线。从电流指标可以看出:对于GaAsP二极管,VF可以上升到2.7V(+40%);对于InGaN二极管,VF可以上程
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved