第二个程序用C语言实现的LED程序,Startup.S是启动代码;led_on_c.c是C语言实现的LED点灯程序。代码分别如下:
@
@ File:Startup.S
@ 功能:通过它转入C程序
@
.text
.global _start
_start:
ldr r0, =0x56000010 @ 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.c
/* 功能:点亮一个LED
//
#define GPBCON (*(volatile unsigned long *)0x56000010)
#define GPBDAT (*(volatile unsigned long *)0x56000014)
int main()
{
GPBCON = 0x00000400; // 设置GPB5为输出口, 位[11:10]=0b01
GPBDAT = 0x00000000; // GPB5输出0,LED1点亮
return 0;
}
all : Startup.S led_on_c.c
arm-linux-gcc -c -o crt0.o Startup.S
arm-linux-gcc -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
不过这次有点小意外,led_on_c_elf大于4k了,如下图,所以不能在内部的ram中进行调试了,不过bin文件远远小于4k可以下载到NandFlash中进行调试。(这里的不能调试是暂时的,以后把SDRAM搞起来就无所谓了)
这个下载我是借助于supervivi + dnw2 (dnw for linux)下载的。我的系统是Ubuntu 12.10,安装的是《
不需要加载kernel模块的linux dnw》一贴中的4楼的dep包,源码编译我没有编译通过。具体的烧写过程和烧写supervivi是一样的,NorFlash启动。按照烧写Supervivi的步骤输入“v”:
然后就如第一个图上用命令行使用DNW2进行烧写了。运行结果正常。
关键字:Eclipse 开发调试 ARM 裸机程序 DNW
引用地址:
Eclipse开发调试ARM裸机程序(三)C语言LED_LINUX使用DNW
推荐阅读最新更新时间:2024-03-16 14:56
平台安全架构(PSA):下一步实现安全物联网的行业通用框架
安全,毋庸置疑是 物联网 行业面临的最为关键的问题。然而,如今众多供应商林林总总各自发布的一系列安全申明令人感到困惑,如何有效实施安全措施变得无从入手。2017年10月, Arm 宣布了平台安全架构(PSA)——PSA是一个行业通用框架,允许 物联网 生态系统中的每位成员以更高的、可扩展的安全性以及更强大的信心向前迈进。下面就随网络通信小编一起来了解一下相关内容吧。 PSA旨在为 物联网 安全提供一套全面的安全指导方针,使从芯片制造商到设备开发商等价值链中的每位成员都能成功实现安全运行。在我们发布PSA之际,我们概述了PSA将向业界交付的目标,我们也一直在为实现这一愿景而不断努力。 威胁模型:建立“正确的”安全级别
[网络通信]
基于ARM的汽车射频识别防盗系统的设计方案
本文介绍了新一代基于射频技术的汽车防盗系统结构,提出了一种以ARM微处理器为核心的汽车射频识别防盗系统的设计方案,方案中给出了此汽车射频识别防盗系统的硬件及局部构件的电路图,在硬件平台上移植了嵌入式实时操作系统,并编写了系统的驱动及应用软件,搭建了实验室模拟仿真平台,在此平台上测试运行结果表明系统良好的防盗功能,从而证实了本方案的具有实用性的价值。 1.引言 随着RFID科技的发展,汽车防盗装置日趋严密、完善和使用方便,汽车防盗的发展方向则向智能程度更高的芯片式和网络式发展。基于射频识别技术的汽车防盗系统属于芯片式防盗系统,它是射频技术的新应用。基于射频识别技术的汽车防盗系统具有无接触,工作距离大,进度高,信息搜集
[单片机]
分析ASIC与ARM的“强手联合”
前 言 嵌入式世界的范围和概念极其广泛,可以从ASIC到MCU,而ASIC是有着巨大的潜力和创新力的一种技术,尽管它的设计非常昂贵,并且所需世界要花费数年,但这依然不影响它的巨大市场潜力。相比而言,单片机方案就便宜得多,时间花费也短,只需几个月甚至几周就可以了。但是不论ASIC还是单片机,他们都收到第三方芯片的限制。在最终产品上来说,他们还是有很多相似点和共同点的,都主要使用ARM CPU核,包含标准的通信接口,片内整合了大量的模拟功能,支持低功耗工作和快速唤醒。 图1 嵌入式设计SoC和MCU对照图 这个对照图中间的是可编程平台,它的设计不发生在硅级别,但能从功能上提供巨大的灵活性,可以集成到一个器件上。这种类型最明
[单片机]
ARM基础:ARM 伪指令详解
/ 4.1 ARM汇编器所支持的伪指令 在ARM汇编语言程序里,有一些特殊指令助记符,这些助记符与指令系统的助记符不同,没有相对应的操作码,通常称这些特殊指令助记符为伪指令,他们所完成的操作称为伪操作。伪指令在源程序中的作用是为完成汇编程序作各种准备工作的,这些伪指令仅在汇编过程中起作用,一旦汇编结束,伪指令的使命就完成。 在ARM的汇编程序中,有如下几种伪指令:符号定义伪指令、数据定义伪指令、汇编控制伪指令、宏指令以及其他伪指令。 4.1.1 符号定义(Symbol Definition)伪指令 符号定义伪指令用于定义ARM汇编程序中的变量、对变量赋值以及定义寄存器的别名等操作。常见的符号定义伪指令有如下几种: 用
[单片机]
嵌入式Linux下ARM处理器与DSP的数据通信
摘要:本文通过一个开发实例详细说明如何通过DSP的HPI接口与运行Linux操作系统的ARM架构处理器进行数据通信。给出接口部分的实际电路和ARM-Linux下驱动程序的开发过程。
关键词:设备驱动程序 嵌入式Linux HPI ARM DSP
1 引言
基于ARM核心处理器的嵌入式系统以其自身资源丰富、功耗低、价格低廉、支持厂商众多的缘故,越来越多地应用在各种需要复杂控制和通信功能的嵌入式系统中。
内核源码开放的Linux与ARM体系处理器相结合,可以发挥Linux系统支持各种协议及存在多进程调度机制的优点,从而使开发周期缩短,扩展性增强。作为数字处理专用电路,DSP的数字信号处理能力十分强大,但对诸如任务管理、通信、
[嵌入式]
单片机与ARM系列处理器通信问题的解决方案
1 系统硬件设计 1.1 主机硬件系统结构 1)电源电路 AT9lRM9200需要1.8 V和3.3 V电源,另外,大部分外围器件需要3.3 V电源,小部分外围器件还需要5 V电源。此处选用了Sipex公司生产的SPXlll7M3-3.3型低压差(LDO)稳压器和SPXlll7M3-1.8型低压差(LDO)稳压器进行DC-DC变换后为各个器件提供工作电压。 2)晶振电路 如图2所示,晶体振荡电路用于向AT91RM9200和其他需要时钟的外设电路提供工作时钟。本系统使用无源晶体振荡器X1(18. 432 MHz)和X2(32.768 kHz)作为系统的主振荡器和慢时钟振荡器,其中32.768 kHz晶振为系统
[单片机]
基于ARM9的视频监控终端的设计与实现
摘要:设计了一种基于S3C2410 硬件平台和嵌入式操作系统的远程视频监控系统终端, 介绍了该嵌入式系统的软硬件设计思想和体系架构,对系统视频采集, MPEG4 压缩, 网络传输进行了详细分析。 与传统的视频监控系统比较, 该方案具有体积小, 成本低, 稳定性好等优点。
视频监控系统是安全防范系统的重要组成部分, 它具有直观, 方便, 信息内容丰富而被广泛应用于许多场合。 传统的数字视频监控一般采用基于PC机平台+ 视频采集卡的形式, 该方案有系统体积大、成本高、稳定性不够好等缺点。 随着嵌入式系统监控和视频压缩技术的日渐成熟, 以及高网络带宽的普及, 通过嵌入式平台, 实现视频信号采集、压缩, 通过网络传输, 进行视频监
[嵌入式]
基于Keil MDK-ARM 和 IAR EWARM进行仿真打印的配置
1写在前面 很多初学者习惯使用软件仿真,应该是很多人都知道的一款仿真软件。 以前开发板相对较贵,且快递不方便,使用仿真软件可以理解。现在便宜的STM32开发板就十几块,还用仿真软件,我不是很理解。 有经验的人都知道,仿真和实际运行情况很多时候都不一样,相信不用我说,大家都明白。 因此,我个人不是很推荐大家仿真,本文内容可能存在纰漏,仅限个人学习。 下面讲述基于Keil MDK-ARM 和 IAR EWARM进行仿真打印的配置。 2Keil仿真打印配置 Keil MDK-ARM不能仿真,原因出在仿真参数出现了问题: 修改这两处参数为:DARMSTM.DLL -pSTM32F103ZE 基于前面使用STM32CubeMX生成工
[单片机]