历史上的今天
返回首页

历史上的今天

今天是:2024年12月24日(星期二)

正在发生

2020年12月24日 | TQ210裸机编程(1)——点亮一个LED

2020-12-24 来源:eefocus

题外话:为什么要学习裸机编程?

学习裸机编程是为以后学习u-boot移植和内核驱动做铺垫的。

如果你只做应用编程的话,那就不必学习裸机编程。


首先查看TQ210的底板原理图

从原理图可知两个LED分别接在S5PV210的GPC0_3和GPC0_4

要点亮LED1,则需要在GPC0_3引脚输出高电平,使三极管Q1导通

如果以前学过arm编程的应该知道,需要设置GPC0_3为输出


查看S5PV210芯片手册

从这里可知,需要设置GPC0CON寄存器的[15:12]为0b0001,使GPC0_3为输出模式

代码如下

ldr r0, =0xE0200060 @GPC0CON寄存器
ldr r1, =0x00001000
str r1, [r0] @设置GPC0_3为输出,GPC0[15:12] = 0b0001


当端口配置为输入时,对应位为引脚状态,当配置为输出时,引脚状态和对应位相同。

我们需要设置GPC0DAT[3] = 1,使GPC0_3输出高电平

完整代码如下:

.global _start @声明一个全局的标号
_start:
ldr r0, =0xE0200060 @GPC0CON寄存器
ldr r1, =0x00001000
str r1, [r0] @设置GPC0_3为输出,GPC0[15:12] = 0b0001

ldr r0, =0xE0200064 @GPC0DAT寄存器
ldr r1, =0x00000008
str r1, [r0] @设置GPC0_3为高电平

halt:
b halt @死循环

问:为什么需要后面的死循环?

答:CPU一旦从某个地址运行,它就会从这个地址往后依次取指运行,当运行完我们的代码,它不会停止,还会往后继续取指运行,但是后面的指令是未知的,CPU运行后不知道会是什么结果,可能正常执行,也可能出现异常,所以我们应该让CPU一直在那里死循环。


Makefile文件

led_on.bin: led_on.o
arm-linux-ld -Ttext 0x20000000 -o led_on.elf $^
arm-linux-objcopy -O binary led_on.elf $@
arm-linux-objdump -D led_on.elf > led_on.dis

led_on.o : led_on.S
arm-linux-gcc -c $< -o $@

clean:
rm *.o *.elf *.bin *.dis

这里指定了程序的链接地址(程序运行时应该位于的地址)为0x20000000,这是开发板的DDR2内存的起始地址,下面就会将程序下载到这个地址。


下载程序测试:

首先安装天嵌提供的DNW程序,用USB线连接PC机和开发板的OTG口,如下图


启动开发板按空格进入u-boot
##### Boot for TQ210 Main Menu #####
##### EmbedSky USB download mode #####

[1] Download bootloader (u-boot or bootimage) to Nand Flash
[2] Download WinCE NK image (NK.bin) to Nand Flash
[3] Download Linux Kernel (zImage.bin) to Nand Flash
[4] Download LOGO Picture (logo.bin) to Nand Flash
[5] Download UBIFS image (root.ubi) to Nand Flash
[6] Download YAFFS image (root.bin) to Nand Flash
[7] Download Program to SDRAM and Run it
[8] Boot the system
[9] Format the Nand Flash
[0] Set the boot parameters
[a] Download User Program
[n] Enter TFTP download mode menu
[r] Reboot u-boot
[t] Test Linux Image (zImage)
[u] Download bootloader to SD Card
Enter your selection:
按7下载程序到内存并运行它

Enter download address:(eg: 0xc0008000)
*20000000

Insert a OTG cable into the connector!

这里输入要下载的地址,然后回车

如果之前没安装天嵌提供的USB下载驱动,这时会提示安装驱动,然后就安装驱动,驱动装好后,打开TQBoardDNW,点击

参数设置->选项,设置如下


然后点击确认


选择 USB下载->UBOOT->选择文件

选择要下载的文件led_on.bin,下载完成后,u-boot使CPU跳到0x20000000地址去运行,可以看到LED1已点亮


推荐阅读

史海拾趣

BOCA公司的发展小趣事

随着国内市场的饱和,BOCA公司开始将目光投向海外市场。公司首先在欧洲和北美设立了分公司,通过本地化运营和营销策略,成功打开了这些市场。随后,BOCA又陆续在亚洲、非洲等地区设立了分支机构,形成了全球化的销售网络。国际化战略的实施不仅为BOCA带来了更广阔的市场空间,也提升了公司的品牌影响力和国际竞争力。

Compact公司的发展小趣事

近年来,电子行业经历了多次技术变革和市场洗牌。面对这些挑战,Compact公司积极调整战略,加大研发投入,以适应市场变化。同时,公司还通过优化生产流程、降低成本等方式提高竞争力。在行业变革中,Compact公司不仅成功应对了挑战,还抓住了机遇,实现了跨越式发展。

EZchip Technologies Ltd公司的发展小趣事

随着技术的不断成熟和市场的认可,EZchip开始寻求更广阔的市场空间。公司通过与全球知名通信设备制造商建立合作关系,将其产品应用于各类网络设备和解决方案中。同时,EZchip还积极参与国际标准制定和行业交流活动,不断提升品牌影响力。通过市场拓展和合作,EZchip的产品逐渐覆盖了全球多个国家和地区,成为了网络通信行业的重要参与者。

思博科技(Cybermax)公司的发展小趣事

为了确保产品质量和客户满意度,思博科技高度重视质量管理体系建设。公司引进了先进的质量管理理念和工具,建立了完善的质量管理体系。同时,公司还通过了ISO9001质量管理体系认证和多项行业认证。这些认证不仅证明了公司在质量管理方面的实力,还为客户提供了可靠的质量保证。

Bharat Electronics Ltd公司的发展小趣事

随着市场的不断变化和竞争的加剧,BEL并未满足于现状,而是积极寻求多元化发展。公司不仅拓展了原有的军事电子领域,还涉足电信、运算、公共运输和广播等多个行业。同时,BEL还积极拓展全球市场,将产品出口到多个国家和地区,实现了从区域性企业向全球性企业的跨越。

Beckhoff Automation GmbH公司的发展小趣事

随着电子行业的全球化趋势日益明显,BCD Semi公司积极拓展国内外市场,与众多知名企业建立了紧密的合作关系。公司通过与合作伙伴共同研发、生产和销售半导体产品,实现了资源共享和优势互补,进一步提升了市场竞争力。同时,BCD Semi还积极参加国际电子展会和交流活动,展示公司的最新技术和产品,为公司的品牌建设和市场拓展奠定了坚实的基础。

问答坊 | AI 解惑

LPC系列单片机简单介绍

LPC2106/2105/2104 包含一个支持仿真的ARM7TDMI-S CPU、与片内存储器控制器接口的ARM7 局部总线、与中断控制器接口的AMBA 高性能总线(AHB)和连接片内外设功能的VLSI 外设总线(VPB,ARMAMBA 总线的兼容超集)。LPC2106/2105/2104 将ARM7TDMI-S 配 ...…

查看全部问答>

毕业设计---万年历

毕业设计---万年历…

查看全部问答>

2.75W低成本USB充电器/适配器参考设计

设计特色 采用革新性控制概念,能够实现元件数量少、成本极低的解决方案  初级侧控制省去了次级侧控制器和光耦器  恒压(CV)精度:±5%  恒流(CC)精度:±10%  带迟滞恢复的过热保护功能可确保PCB温度在所有条件下均处于安全范围内  自动 ...…

查看全部问答>

RoHS指令禁令范围再次扩大

RoHS指令禁令范围再次扩大 近日,笔者了解到:据欧洲议会报告起草人提交的RoHS指令修订报告,电器设备中将另外禁用7种物质。指令附件四中的禁用物质清单将覆盖所有溴化和卤化阻燃剂、PVC、氯化增塑剂,以及3类邻苯二甲酸盐DEHP、BBP、DBP。为了 ...…

查看全部问答>

TTL与COMS电平,特性,比较及注意事项

本帖最后由 paulhyde 于 2014-9-15 09:02 编辑 1.CMOS电平: \'1\'逻辑电平电压接近于电源电压,\'0\'逻辑电平接近于0V。噪声容限很大 2.TTL电平: 输出高电平>2.4V,输出低电平=2.0V,输入低电平…

查看全部问答>

有新片子可以代替umc6538来输出复合视频信号??????????

有新片子可以代替umc6538来输出复合视频信号??????????…

查看全部问答>

CE

老板我第一个月工资到底什么时候给我呢?? 这边吃饭开销还是很大的,我都快求你了,实在是没法了!…

查看全部问答>

低价出售闲置开发板、仿真器

1.LM3S9B96最小系统 78元自制,含原理图,亲测可用。 点击购买http://item.taobao.com/item.htm? ... d787&id=20745072174 2.FPGA开发板 98元芯片为EP2C8Q208,亲测可用。 点击购买http://item.taobao.com/item.htm? ... d787&id=20745308607 ...…

查看全部问答>

cache分析工具请教

CCS3.3中cache分析工具在硬仿的时候可以使用吗…

查看全部问答>

pic12f675

小弟第一次做单片机,想点亮一个led,用protues仿真,怎么不行,哪里出了问题啊,求助啊??? #include void main(void)   {     CMCON=0X07;     ANSEL=0X00;     OPTION=0X80;     T ...…

查看全部问答>