历史上的今天
返回首页

历史上的今天

今天是:2025年10月28日(星期二)

正在发生

2022年10月28日 | 【JZ2440笔记】裸机实验点亮LED

2022-10-28 来源:csdn

一、前言

最近在学韦东山的JZ2440开发板,于是记录下学习过程中的笔记。一般学程序写的第一个例子是打印“Hello World”,而学单片机的第一个例子一般都是点亮LED,学ARM的话如果从裸机开始学,也跟玩单片机差不多,从点亮LED开始。


二、实验步骤

1、目标


点亮开发板上的3个LED灯。


2、硬件连线

点亮LED需要S3C2440芯片的IO引脚GPF4、GPF5、GPF6输出低电平即可。


3、寄存器配置

和玩单片机一个套路,配置IO模式(GPFCON寄存器)和要输出的电平(GPFDAT)就行了。即GPFCON寄存器给0x00001500把GPF4、5、6配置成输出模式,GPFDAT给0x00000000让三个IO输出低电平。


4、编写代码


这里比较干脆,教程里从汇编讲起,所以用汇编语言写的代码。


led_turnOn.S


@******************************************************************************

@ 功能:LED点灯程序,点亮LED1、2、4

@ 对应IO为GPF4、GPF5、GPF6

@******************************************************************************  

 

.text

.global _start

_start:

LDR R0,=0x56000050 @ R0放入GPFCON寄存器的地址

MOV R1,#0x00001500 @ R1放入GPFCON想要设置的值

@ 将GPF4、GPF5、GPF6设置为输出模式

STR R1,[R0] @ 将R1值放入R0指向的地址,输出模式配置完成

LDR R0,=0x56000054 @ R0放入GPFDAT寄存器的地址

MOV R1,#0x00000000 @ R1放入GPFDAT想要设置的值

@ 将GPF4、GPF5、GPF6设置为输出低电平

STR R1,[R0] @ 将R1值放入R0指向的地址,输出电平配置完成

@ 还有个GPFUP寄存器可以配置IO上下拉的,这里不配置也行

MAIN_LOOP:

B MAIN_LOOP @ 程序原地死循环跳转


MakeFile


led_turnOn.bin : led_turnOn.S

#根据led_turnOn.S生成目标文件led_turnOn.o,

#-g加入调试信息,-c编译不链接,-o目标文件

arm-linux-gcc -g -c -o led_turnOn.o led_turnOn.S

#Ttext指定代码段的链接地址

arm-linux-ld -Ttext 0x0000000 -g led_turnOn.o -o led_turnOn_elf

#根据led_turnOn_elf生成二进制文件,-O binary输出二进制

arm-linux-objcopy -O binary -S led_turnOn_elf led_turnOn.bin

clean:

#删除bin和中间文件

rm -f   led_turnOn.bin led_turnOn_elf *.o

将这两个文件使用FTP工具拷贝到Linux下,执行make命令生成二进制文件led_turnOn.bin,将该文件用FTP工具拷贝回Windows下,可以烧写到开发板上运行了。

5、烧写代码到开发板


有很多种方式烧写代码,如openJTAG或者DNW,这里使用openJTAG。打开Windows命令行CMD工具,进入到led_turnOn.bin所在目录,输入oflash [文件名]。

选择0,使用的烧写工具为openJTAG:

CPU选择1,S3C2440:

选择烧写到NandFlash中去:

烧写到NandFlash的块0:

为什么把bin文件烧写到NandFlash中去而且还是块0呢,因为S3C2440不像单片机一样把程序烧到内部的ROM,它的程序放在外部存储器中,上电之后再到外部存储器中去读取出来运行。在这里,S3C2440内部有一个4KB大小的片内SRAM,没有片内ROM供我们使用,上电之后有个默认操作,就是S3C2440在设置为Nand启动之后,会将NandFlash块0的前4KB内容拷贝到内部的4KB片内SRAM内,然后PC指针指向SRAM的开始地址,从SRAM中读取内容作为程序指令然后运行。所以bin文件是烧写到NandFlash中去的。


最后拔掉openJTAG和开发板的连线,拨码开关选择Nand启动,开发板重新上电运行,三个LED灯就点亮了。


推荐阅读

史海拾趣

Cincon公司的发展小趣事

随着业务的快速发展,Cincon开始将目光投向国际市场。1999年,公司在美国加州设立了办事处,以便更好地服务北美市场。同一年,为了应对日益增长的生产需求,Cincon在中国东莞设立了新工厂。这些举措极大地提升了公司的生产能力和国际市场竞争力,为Cincon的全球化发展打下了坚实的基础。

Global Communications公司的发展小趣事
根据晶体振荡器对频率稳定性的要求,选择具有足够精度的温度传感器。精度越高,补偿效果通常越好。
Capital Advanced Technologies公司的发展小趣事

CAT深知技术创新是企业发展的核心动力。因此,公司不断投入研发资源,推动技术创新与突破。经过多年的努力,CAT成功开发出了一系列具有自主知识产权的电子产品和技术,如高性能的电路板、精密的连接器以及先进的测试设备等。这些产品的推出,不仅提高了CAT的市场竞争力,也为整个电子行业的发展注入了新的活力。

Fastron公司的发展小趣事

Fastron公司一直将技术创新作为企业发展的核心动力。自创立以来,公司不断投入研发资源,致力于电感器技术的创新。Fastron生产的符合RoHS标准的高质量电感器和线圈,如AEC-Q200级产品,得到了市场的广泛认可。这些产品不仅具有高性能和长寿命,还能满足客户多样化的需求。

Ericsson公司的发展小趣事

Ericsson公司在早期就非常注重市场拓展和全球布局。通过与各国电信运营商建立合作关系,Ericsson成功将其产品和服务推广到了全球各地。特别是在中国市场,Ericsson早在19世纪90年代就与中国签订了供货合同,成为中国通信网络建设的重要参与者。如今,Ericsson已经在中国扎根130余年,成为了唯一一家从1G到5G全程参与中国通信网络建设的企业。

BALLUFF公司的发展小趣事

BALLUFF公司的历史可以追溯到1921年,由格布哈德·巴鲁夫(Gebhard Balluff)创建的一家机械修理厂开始。这家修理厂起初规模较小,但巴鲁夫凭借其对机械技术的精湛理解和不懈追求,逐渐将业务发展壮大。他通过不断的技术创新和产品升级,使得修理厂逐渐转型为一家专注于生产精密部件、车件和铣件的企业。这一转变不仅奠定了BALLUFF公司的工业基础,也为其日后在传感器领域的崛起打下了坚实基础。

问答坊 | AI 解惑

PC电源管理技术

我们采用的测试程序是基于最新的Business Winstone 2001的BatteryMark测试程序,它可以更加客观的反映你的笔记本电源管理的性能。这个测试程序不再是让笔记本不停的工作,而是模拟人们普通工作的情况,给系统一个喘息的空间,现实中我们的工作情况 ...…

查看全部问答>

wince batt驱动adc采样不准

各位大虾帮帮忙,小弟在做s3c6410的蓄电池驱动,读取adcdat发现采样不准,采样到的数值波动范围很大,从2800~3600, 硬件测试发现输入电压很稳定,纹波之类的都没问题。 经过测试发现点击触摸屏会改变采样到的值,去掉touch驱动,ad采样的值波动 ...…

查看全部问答>

将剩余nor flash 划分分区问题

我的平台是PXA270+Wince6.0,32M Intel P30 NOR Flash 使用MSFALH来将flash剩余容量利用起来,遇到了一些问题,也有一些疑问,请大家帮忙一下。 如果使用RAM运行, 分区划分成功,可正常显示盘符,也可以正常读写。 但如果选择 IMGFLASH 写入fla ...…

查看全部问答>

急求解决单片机串口通信的问题

小弟通过单片机与PC串口通信,遇到了问题,望大哥大姐们指教 PC暂时用串口调试助手代替吧,51单片机往PC发多个字节的数据,串口调试助手接收,但是无论如何都只能接收到第一个字节的数据。我用串口调试助手向单片机发送数据,如果只发一个字节,单 ...…

查看全部问答>

wince 下CF不可见

我的硬件是cpu+852gm+ich4,定制的ce image不能看到cf卡(硬盘)。 我在其他架构主板上amd+cs6656上是可以看到cf卡(硬盘)。 微软网站有个相关问题何宗健老师做了回答,说可能与芯片有关。 我现在想请教大家如何cpu+852gm+ich4架构上实现了?…

查看全部问答>

TCPMP 问题

最近下了TCPMP 0.72版源码,编译后在模拟器上播放的挺好,拿到板子上播放就很卡(班子700MHZ)(同一片源:视频 : 40 Mb, 3993 Kbps, 30.0 fps, 清晰度: 1280*720 (16:9),  XVID = XVID Mpeg-4;音频 : 2.29 Mb, 224 Kbps, 44100 Hz, 2 ...…

查看全部问答>

2410的初始化以及定时器设定问题?

我用的时候广州友善之臂的开发板,现在再没有操作系统的情况下,就用了友善之臂提供的启动代码,写了一个定时器程序,但是现在就是跑不起来,能不能帮忙看看? #include \"def.h\" #include \"option.h\" #include \"2410addr.h\" #include \"2 ...…

查看全部问答>

199刀飞利浦HUE惨遭拆解 神灯初现端倪

经过King和包租婆的各方奔走,囊中羞涩的我们(仅2W项目经费)总算了找到了以下单位提供的免费样品,真是感激淋涕啊!1、 欧司朗中国提供的R,G,B,W灯珠2、 忆光提供的R,G,B,W灯珠3、 信驰达科技提供的CC2540 蓝牙模块4、 四正节能提供的散热器5、进 ...…

查看全部问答>

【TI首届低功耗设计大赛】sacq的金刚狼(7):最简单的数字电压表

replyreload += \',\' + 1767184;这个“简单”,更多的意义是:这个编程的过程很简单。 Energia的例程AnalogInOutSerial的主要功能是把采集的ADC结果通过串口发送出去, 这次就准备增加个LCD1602的显示功能,并把ADC结果转换成电压值(V)。 ...…

查看全部问答>