首页
论坛
电子技术基础
模拟技术
可编程器件
嵌入式系统与MCU
工程师职场
最新帖子
问答
版主申请
每月抽奖
商城免费换礼
社区有奖活动
博客
下载
评测
视频
文库
芯语
资源
2025泰克杭州测试论坛
2025中国低空经济产业创新发展大会
【直播】芯片设计工艺仿真全解析
西门子数字化工业软件资源中心
嵌入式设计资源库
智能楼宇/家电控制应用全解析
在线研讨会
EE直播间
小测验
白皮书
行业及技术活动
杂志免费订阅
免费在线工具
厂商资源中心
论坛
博文
电子工程专辑
电子技术设计
国际电子商情
资料
白皮书
研讨会
芯语
文库
登录|注册
登录
mzwhhwj
修改
文章:
26
阅读:
60647
评论:
33
赞:
435
好友
私信
个人主页
文章
26
原创
0
阅读
60647
评论
33
赞
435
原创
ARM9/ARM11裸机开发笔记1之MDK开发环境和点亮LED
2015-1-11 12:35
6901
17
27
分类:
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
写原创有奖励!2025面包板原创奖励正在进行中
最新发表
推荐阅读
明星博主
原创博文
年度排行
博文排行
博文评论
FPGA/CPLD
MCU/ 嵌入式
模拟
电源/新能源
测试测量
通信
智能手机
处理器与DSP
PCB
汽车电子
消费电子
智能硬件
物联网
软件与OS
采购与分销
供应链管理
工程师职场
EDA/ IP/ 设计与制造
无人机
机器人/ AI
医疗电子
工业电子
管理
写博文
点赞(
17
)
收藏
分享到:
上一篇:
STM32的内存变量的由来
下一篇:
Microsoft .NET Micro Framework移植开发笔记之移植初步
PARTNER CONTENT
换一换>
更多>
AI时代的氮化镓:市场与技术将走向何方?
黄烨锋
2025-04-24
ST移动安全解决方案:构建全场景安全连接生态
赵明灿
2025-05-12
文章评论
(
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
阅读:
60647
评论:
33
赞:
435
好友
私信
个人主页
文章
26
原创
0
阅读
60647
评论
33
赞
435
个人文集
.NET Micro Framework USB移植
(9)
最新评论
更多
bruce小肥羊 : 不用万用表量一下电压和电流吗?整流管比之前红亮了很多----要不老化,要不是过流现象。 你说的对,课本教材 ...
自做自受 ...
评论博文
2025-5-20
【电子DIY】+不得不拆解修理电子管功放机 ...
bruce小肥羊 : 1991年我家也有SONY FH系列的,花费4700大洋,音质不错。可惜96年改装VCD给维修店老板搞坏了稳压电源部分,换 ...
自做自受 ...
评论博文
2025-5-20
不得不拆解修理台式组合音响
开发工匠 : 写的好,质量为王,我们国家产品质量世界第一,真金不怕火来炼,质量永远第一,中国制造质量世界第一,产品永远放 ...
curton
评论博文
2025-5-19
战火中的启示:质量为王的时代已然来临 ...
最新
博文
艾体宝干货丨全面解读CRA:抓住欧盟网 ...
时源芯微|PCB 布线规则详解 ...
怎么选靠谱的软件开发公司?2025年十 ...
资料下载
本周热帖
[完结17章]计算机视觉—YOLO+Transfom ...
电子元件FCO-7L-UJ超低抖动差分输出振 ...
电子元件超低抖动差分输出振荡器FCO-5 ...
电子元件FCO-3L-UJ超低抖动差分输出振 ...
电子元件超低抖动差分输出振荡器FCO-2 ...
三个关于PD的问题
【拆解】拆解当年很火的小米99元13.5 ...
如何利用MDD开关二极管构建快速开关保 ...
什么是SFP,SFP+,QSFP,QSFP+?都有 ...
IP6823至为芯用于无线充电方案的15W无 ...
最新资讯
芯语最新
2025松山湖中国IC创新高峰论坛:继续 ...
小米法务部通报网络黑公关案:犯罪团 ...
高通进军数据中心市场,回应小米自研 ...
鹏瞰TS-PON Gen2芯片,用光协议重塑 ...
韦尔股份拟更名为“豪威集团”,战略 ...
小米玄戒O1核心架构跑分曝光! ...
电子制造企业智能制造升级:MES系统应 ...
PMIC全家桶,让电源管理和节能更进一 ...
安全无小事,这款追踪器方案为个人安 ...
合洁科技电子净化工程:高品质集成电 ...
EE直播间
更多
云上硬件仿真如何实现验证效率倍增
直播时间: 05月22日 10:00
材料介电常数的精确表征和测试
直播时间: 07月03日 10:00
在线研讨会
更多
NSSine™系列实时控制MCU在数字电源和电机控制领域的应用
ST 在大功率热管理系统中的电机控制系统方案(AI 数据中心/暖通空调/电池储能系统/变频制冷)
AI 巨型芯片,性能越强,测试越难,如何破局?
ADMT4000重新定义多圈编码器设计
热门
推荐
3D IC设计卡在哪儿?
5场研讨会揭秘3DIC全攻略
英飞凌生态盛宴:技术干货+人脉资源+商业机遇,一站集齐
超低功耗CW32L083系列
TOLG 技术采用超紧凑的海鸥翼式引脚设计
我要评论
10
17
分享到微信
分享到微博
分享到QQ
点击右上角,分享到朋友圈
我知道啦
请使用浏览器分享功能
我知道啦
关闭
站长推荐
/3
【直播】从周级到天级:IC 云仿真加速实战
算力自由!中小IC团队如何用云仿真抢跑3个月流片? 验证效率翻倍的秘密:零成本体验英诺达云仿真黑科技
2025第1期拆解活动:赢示波器、运动相机、热像仪等!
示波器、影石运动全景相机、大疆无人机、高清红外热成像仪;树莓派5等等
【2025面包板社区内容狂欢节】发帖/回帖赢25万E币!
活动时间:即日起——2025年全年(发完20万E币为止!)
首页
论坛
电子技术基础
模拟技术
可编程器件
嵌入式系统与MCU
工程师职场
最新帖子
问答
版主申请
每月抽奖
商城免费换礼
社区有奖活动
博客
下载
评测
视频
文库
芯语
资源
2025泰克杭州测试论坛
2025中国低空经济产业创新发展大会
【直播】芯片设计工艺仿真全解析
西门子数字化工业软件资源中心
嵌入式设计资源库
智能楼宇/家电控制应用全解析
在线研讨会
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