首页
论坛
电子技术基础
模拟技术
可编程器件
嵌入式系统与MCU
工程师职场
最新帖子
问答
版主申请
每月抽奖
商城免费换礼
社区有奖活动
博客
下载
评测
视频
文库
芯语
资源
2024国际航空电子大会
2024国际 AIoT 生态发展大会
3D IC 设计和Chiplet资料下载
车载总线测试和解码方案
新能源汽车三电测试技术中心
在线研讨会
EE直播间
小测验
白皮书
行业及技术活动
杂志免费订阅
免费在线工具
厂商资源中心
论坛
博文
电子工程专辑
电子技术设计
国际电子商情
资料
白皮书
研讨会
芯语
文库
登录|注册
登录
最新发表
推荐阅读
明星博主
原创博文
年度排行
博文排行
博文评论
FPGA/CPLD
MCU/ 嵌入式
模拟
电源/新能源
测试测量
通信
智能手机
处理器与DSP
PCB
汽车电子
消费电子
智能硬件
物联网
软件与OS
采购与分销
供应链管理
工程师职场
EDA/ IP/ 设计与制造
无人机
机器人/ AI
医疗电子
工业电子
管理
写博文
mzwhhwj
修改
文章:
26
阅读:
57580
评论:
33
赞:
401
好友
私信
个人主页
文章
26
原创
0
阅读
57580
评论
33
赞
401
原创
ARM9/ARM11裸机开发笔记1之MDK开发环境和点亮LED
2015-1-11 12:35
6750
15
25
分类:
MCU/ 嵌入式
很多从单片机或者从CM3转到ARM9/ARM11的时候,一开始就讲得是Uboot,Linux,然后就是什么QT等高级玩意,不像单片机有什么裸机开发的概念,的确,这些高级ARM本来就是用来跑系统,谁用来它做裸机开发呢。但是如果我们要更好了解ARM的工作原理,,尤其是想进阶嵌入式中最难的一层,驱动层的话,甚至想把其它的非Linux系统移植到ARM9/ARM11上。我们就无法避免要跟ARM跟底层的寄存器打交道,要了解ARM的内核,时钟,GPIO,SPI,等等外设的工作原理和配置。通过裸机的一些实验,我们就可以像用STM32这样来写ARM9/ARM11代码,让我们更深入了解ARM的原理。
我之前因为在做把MF这个系统移植到S3C2416上,基本上都靠MDK来完成调试,对ARM9/ARM11的认识有了进一步的认识。这里我就以S3C2416为例来讲怎么建立开发环境和点亮LED灯。
1、裸机开发必要条件:玩过ARM9之上同学都知道,ARM9之类的ARM是没有内部Flash的话,我们不能直接用开发软件来对烧写代码来调试硬件,这点跟我们开发单片机是最大的区别,也是导致很多人不知道怎么来进行ARM9的裸机开发。有同学就说,没有Flash,还有RAM,没错S3C2416内部是有RAM,但是很小,S3C2416的内部RAM在用NAND启动时候,才8K而已,S3C2440的才4K,我们要在这8K的RAM既放存数据还要放代码,那我们写不了几行代码。所以最好的方法就是用Uboot,先把芯片的时钟,SDRAM都初始化好,那我们就可以用SDRAM来调试代码,一般都有64M的SDRAM,对我们来完全足够用了。这里我只在开发上烧写了Uboot,内核跟文件系统都没有烧,因为如果Uboot引导了Linux内核后,Linux内核接到CPU的控制权,Debug会被关掉,我们就无法再使用Jlink对开发进行调试。你可以进去Uboot上用nand erase来把内核擦掉,不然你每次要调试的时候要注意不要让Uboot引导内核。
2、用MDK建立工程:新建工程大家都会,我这里只说要点。选择器件的话,选择我们对应ARM开发板上芯片,注意如果是MDK5.0以上,默认是没有安装有ARM7/ARM9有器件库的,我有发帖子共享给大家,如果用是用MDK5.0以上的同学翻翻帖子去下载。
点确定后,然后是打开工程设置
其中IROM就是代码区的地址,前面说了我们没法用NAND,只能通过SDRAM来调试。我的S3C2416的开发是64M的DDR,地址就是从0X30000000开始到0x34000000,这里我一半用做ROM,从0x32000000开始,另一半用做RAM。
Debug设置,一样我们设置成J-Link。点OK就可以完成工程的建立。
3、点亮LED灯:用过STM32的同学都知道,新工程后,要增加启动代码,然后才是C代码来写Main函数。这里我们没有启动代码,也不知道怎么找到Main函数。没关系,我们自己来写个最简单的启动代码,让它来转到我们的C代码。新建一个startup.s的汇编代码文件,然后加入到工程上来,代码如下
IMPORT Main ;//c语言入口函数
PRESERVE8 ;//字节对齐
CODE32 ;//ARM代码
AREA RESET,CODE,READONLY ;//reset名,代码段,只读
ENTRY ;//程序入口
bl Main
END
IMPORT Main这里就引入我们C文件里的Main函数,ENTRY 表示的这里代码的开始,编译器就从这里开发编译代码。 bl Main这里就是跳转到我们的Main函数。END就是说这里代码的结尾。相关的汇编指令大家可以去找《DUI0204HC_rvct_assembler_guide 》这本书,里面就讲到MDK所有的汇编指令。这里我们就写出来最简单的启动代码。接着就是写我们的C代码了,增加Main.c文件到工程中,我的代码如下:
#define GPBCON *(volatile unsigned int*)0x56000010
#define GPBDAT *(volatile unsigned int*)0x56000014
#define GPBUDP *(volatile unsigned int*)0x56000018
int Main(void)
{
unsigned int i;
GPBCON = 1 << 2;//设置PB1为输出
GPBUDP = 2 << 2;//设置PB1为上拉
GPBDAT &= ~(1 << 1);//置PB1的输出为0
while(1)
{
}
}
点亮LED的原理大家都知道,就不用我再说了,我的开发的LED的控制脚对应的是PB1,这里我就要对GPIOB第一个引脚进去配置。代码的开头我定义了GPIOB口相关的寄存器。具体的自然也就是翻对应ARM的参考手册,下面是S3C2416手册相关GPIOB的寄存器
这里就以GPBCON的寄存器来说,折腾寄存器的同学一看明白怎么做了。GPBCON是来控制GPIO的输入还是输出的,我们这里把GPB1设置成输出,然后设置GPBDAT寄存器让GPB1输出低电平,LED就会被点亮。
接下就是编译,代码没写错就会编译成功,点调试之前要注意开发不要进去Linux,如果你没有擦除内核,就要让开发板进入Uboot,如下:
点调试,弹出下面对话框,提示Jlink不支持S3C2416,没关系,点Yes
然后我们选一个最接近S3C2416的S3C2410A。如果是用S3C2440的话应该就不会有这个问题。
然后点OK进去调试。进去调试后注意不要点运行。因为这时候的PC指针地址是0x0,而我们的代码并不是在0x0,而是在0x32000000。我们手工修改PC指针为0x32000000
然后我们单步执行,可以看代码跑起来了,代码执行于While(1)的时候,就可以看到LED灯亮起来了。
裸机
arm9
s3c2416
写原创有奖励!2024面包板原创奖励正在进行中
点赞(
15
)
收藏
分享到:
上一篇:
STM32的内存变量的由来
下一篇:
Microsoft .NET Micro Framework移植开发笔记之移植初步
PARTNER CONTENT
换一换>
更多>
新蓝牙6.0协议扩展应用范围
Silicon Labs(芯科科技)蓝牙产品经理Parker Dorris
2024-12-16
概伦电子:以开放心态共绘EDA产业新蓝图
概伦电子
2024-12-30
SK海力士开发出适用于AI数据中心的高容量固态硬盘‘PS1012 U.2’
SK海力士
2024-12-18
新一代MCU向着边缘AI和实时控制发展
赵明灿
2024-12-11
内存市场稳定化:2024年末的定价趋势与供应商调整
Fusion Worldwide
2024-12-05
文章评论
(
10
条评论)
登录
后参与讨论
您需要登录后才可以评论
登录
|
立即注册
发布
用户377235
2015-7-4 14:21
写的很好
回复
用户377235
2015-4-4 21:46
这个是在线调试吧,可不可以使程序单独运行?
回复
用户1672330
2015-1-16 09:54
努力学习中新手一个
回复
xyd20405
2015-1-16 07:30
Mark. 对我这样的初学者来说,建立概念比较重要。这是一篇好文。
回复
用户377235
2015-1-15 19:37
讲解不够详细
回复
hnltm_451604858
2015-1-15 18:16
MDK不支持ARM11吧?
回复
用户592202
2015-1-15 17:11
文字润色不够!有好多语句不通顺、词不达意,不容易理解。可能没有检查完就上传了。
回复
mzwhhwj
2015-1-15 09:51
我这边是没有问题的
回复
用户1675147
2015-1-15 09:36
已阅读,谢谢
回复
用户1823973
2015-1-15 08:38
报告楼主,我这图片看不了,无法显示。
回复
查看更多评论
相关推荐阅读
mzwhhwj
2017-12-07 08:49
物联网前端后台1——一条硬件狗的学习历程
距上次写MQTT的文章,不知不觉已经过了三个月了,本来打算写自己搭建MQTT Borker的,但这方面的资料只要一百度都有,难度也不大,又加上项目比较忙,一直没时间写文章。从上个月开始...
mzwhhwj
2017-09-12 08:18
物联网核心之MQTT移植
在上一篇文章中,只是讲了MQTT的主要内容,至于怎么移植到STM32上,怎么使用才是最重要的关键。这里使用的平台是RT8711的WIFI SOC,使用的LWIP跟FreeRTOS,移植使用跟STM32...
mzwhhwj
2017-09-12 08:15
打造实用个性的Log输出宏
我们在调试嵌入式程序的时候,用IDE+调试器是最直接的方式,但是很多时候我们还需要用串口输出来打印一些Debug的信息,来帮助我们调试。串口调试最简单的方式的话,最简单就是用printf来打印。但是...
mzwhhwj
2017-08-24 08:39
物联网核心之MQTT(一)
MQTT,目前物联网的最主要的协议,基本所有收费的云平台都是基于MQTT协议,比如机智云,和所有的开放云平台比如中国移动的oneNet、百度的云平台也都支持MQTT的接入。虽然MQTT很...
mzwhhwj
2016-03-18 18:47
硬件狗的浪漫
硬件平台:STM32F4-discovery开发平台:VS2013+VisualGDB5.12 ...
mzwhhwj
2015-11-06 09:24
评论:@sunyzz 博客中提到的“【博客大赛】“虚短”“虚断”两板斧,搞定运算放大器!”
学习了...
mzwhhwj
修改
文章:
26
阅读:
57580
评论:
33
赞:
401
好友
私信
个人主页
文章
26
原创
0
阅读
57580
评论
33
赞
401
个人文集
.NET Micro Framework USB移植
(9)
最新评论
更多
写的好,大师之作,学习和参考
开发工匠 ...
评论博文
2025-1-2
【富芮坤FR3068x-C】+ 环境搭建
应用上有FAE应用支持,有样品可提供测试
446230017_5 ...
评论博文
2025-1-2
NU402-LED恒流驱动芯片(完全兼容BCR402) ...
写的好,减成本,害人害己,不能省,
开发工匠 ...
评论博文
2025-1-1
韩国航空业现状与发展:从空难事件看行业全 ...
最新
博文
【工程师故事】+半年的经历依然忧伤, ...
双重安全保障,赋能智能汽车 ...
全面解析双保险和开关插座滤波器的关 ...
资料下载
本周热帖
Processing-processing3.5.4
ESP32TFT常用字体库.zip
自动增益控制放大器设计与实现 ...
无线传能充电器设计与实现论文 ...
基于单片机自动电阻测试仪设计论文 ...
采样示波器的原理和应用
AEC-Q104认证:芯片模组的可靠性与质 ...
扫描电镜与氩离子抛光技术在样品成分 ...
飞凌嵌入式获批建设「河北省嵌入式计 ...
晶振知识分享 | 晶振外接2颗电容的3个 ...
最新资讯
芯语最新
中国商务部公布对美出口管制措施,28 ...
用于电路分析和设计的Spice仿真指南– ...
商务部对10家美国企业实施不可靠实体 ...
国家大基金三期等设立930亿元股权投资 ...
工信部成立人工智能标准化技术委员会 ...
特斯拉惨遭负增长:2024年交付179万辆 ...
OpenCV4最新版本系统化学习指南 ...
2024年AI编程有多强?谷歌工程主管揭 ...
2024,网文行业加速破圈
排查嵌入式软件中的bug时,别把代码改 ...
EE直播间
更多
精密半导体参数测试解决方案
直播时间: 01月08日 10:00
在线研讨会
更多
多路有光·精准不凡——KSW-SGM01模拟信号源发布会
重塑机器人未来:揭秘创新芯片解决方案的颠覆力量
迈来芯Triaxis® 3D磁传感器:汽车安全应用的优选方案
适用于安全连接的新一代PIC32CK SG/GC系列单片机
热门
推荐
构建AI未来,Arm计算平台无处不在
如何提升高压系统的实时性能?
我要评论
10
15
分享到微信
分享到微博
分享到QQ
点击右上角,分享到朋友圈
我知道啦
请使用浏览器分享功能
我知道啦
关闭
站长推荐
/3
工程师写总结,送示波器、稳压电源、螺丝刀!
分享你的:职业生涯中故事、2024年年终总结、工作中的小故事,丰富多样的礼品等你哦!
面包板社区有奖活动汇总楼
1. DIY赢大奖!2. 写原创,有奖励!3.参与话题,奖励E币!4. 免费申领:开发板试用、书籍试读...
电子工程师DIY来分享,赢大疆无人机、小米手机、NAS存储、万用表 ...
展示您的 DIY 电子设计作品,社区将有丰富奖励送给您!
首页
论坛
电子技术基础
模拟技术
可编程器件
嵌入式系统与MCU
工程师职场
最新帖子
问答
版主申请
每月抽奖
商城免费换礼
社区有奖活动
博客
下载
评测
视频
文库
芯语
资源
2024国际航空电子大会
2024国际 AIoT 生态发展大会
3D IC 设计和Chiplet资料下载
车载总线测试和解码方案
新能源汽车三电测试技术中心
在线研讨会
EE直播间
小测验
白皮书
行业及技术活动
杂志免费订阅
免费在线工具
厂商资源中心
帖子
博文
返回顶部
×
用户377235 2015-7-4 14:21
用户377235 2015-4-4 21:46
这个是在线调试吧,可不可以使程序单独运行?
用户1672330 2015-1-16 09:54
xyd20405 2015-1-16 07:30
用户377235 2015-1-15 19:37
hnltm_451604858 2015-1-15 18:16
用户592202 2015-1-15 17:11
mzwhhwj 2015-1-15 09:51
用户1675147 2015-1-15 09:36
用户1823973 2015-1-15 08:38