主题 : 新手的建议 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 4188
精华: 0
发帖: 10
金钱: 100 两
威望: 100 点
综合积分: 20 分
注册时间: 2009-03-02
最后登录: 2009-08-09
楼主  发表于: 2009-03-04 13:27

 新手的建议

本人也是新手转个贴与大家共同学习下

1. 做个最小系统板:如果你从没有做过ARM的开发,建议你一开始不要贪大求全,把所有的应用都做好,因为ARM的启动方式和dsp或单片机有所不同,往往会遇到各种问题,所以建议先布一个仅有Flash,SRAM或SDRAM、CPU、JTAG、和复位信号的小系统板,留出扩展接口。使最小系统能够正常运行,你的任务就完成了一半,好在ARM的外围接口基本都是标准接口,如果你已有这些硬件的布线经验,这对你来讲是一件很容易的事情。

2. 写启动代码,根据硬件地址先写一个能够启动的小代码,包括以下部分:
初始化端口,屏蔽中断,把程序拷贝到SRAM中;完成代码的重映射;配置中断句柄,连接到C语言入口。也许你看到给你的一些示例程序当中,bootloader会有很多东西,但是不要被这些复杂的程序所困扰,因为你不是做开发板的,你的任务就是做段小程序,让你的应用程序能够运行下去

3. 仔细研究你所用的芯片的资料,尽管ARM在内核上兼容,但每家芯片都有自己的特色,编写程序时必须考虑这些问题。尤其是女孩子,在这儿千万别有依赖心理,总想拿别人的示例程序修改,却越改越乱。

4. 多看一些操作系统程序,在ARM的应用开放源代码的程序很多,要想提高自己,就要多看别人的程序,linux,uc/os-II等等这些都是很好的原
码。

6.如果你是作硬件,每个厂家基本上都有针对该芯片的DEMO板原理图。先将原理图消化。这样你以后做设计时,对资源的分配心中有数。器件的DATSHEET一定要好好消化。

7.如果做软件最好对操作系统的机理要有所了解。当然这对软件工程师来说是小菜一碟。但如果是硬件出身的就有点费劲。
级别: 新手上路
UID: 4670
精华: 0
发帖: 18
金钱: 180 两
威望: 180 点
综合积分: 36 分
注册时间: 2009-03-24
最后登录: 2009-04-19
1楼  发表于: 2009-03-25 18:25
学习中。。
天道酬勤
级别: 新手上路
UID: 6141
精华: 0
发帖: 10
金钱: 100 两
威望: 100 点
综合积分: 20 分
注册时间: 2009-05-21
最后登录: 2009-07-13
2楼  发表于: 2009-05-21 15:07
有点晕乎乎,我自己做了一块板子,想要用2440来驱动,不只如何下手。。。
天道酬勤
这个阶段正是我事业的上升期,我怎么能走得开呢?
级别: 精灵王
UID: 3197
精华: 3
发帖: 770
金钱: 6995 两
威望: 5398 点
综合积分: 1600 分
注册时间: 2008-12-30
最后登录: 2010-12-31
3楼  发表于: 2009-05-21 16:43
不敢苟同。
对于高级arm系统来说,不应该按照单片机的思维方式来学习,友善的用户手册其实安排的就佷不错,它是一个从感性到理性的认知学习过程:
第一章:至少你得先了解下接口资源和开关设置吧
第二章:新手根本不需要从代码开始学习,所以先安装人家预装得系统玩玩,这也对应了上一章得接口资源介绍,看看是否真有其事。
第三章:预装的系统一般是Linux,要想玩的更顺手,要学会刷机更新系统,这同样不需要写程序看代码
第四章:DADS是最常用的底层开发工具,很多玩arm的都需要了解一些,所以要有所了解,实际这一章可以先跳过。
第五章:学会刷机更新系统了,那就自己编译内核试试,但总得先建立开发环境吧。对友善提供的代码包先混个脸熟。
第六章:按照人家的缺省内核先编译一个,顺便熟悉一下内核的配置和编译过程,本章还详细介绍了各个驱动的源代码位置,如果你对这个都不了解,何来写驱动?
第七章:到编码阶段了,但也不用那么担心,所以先来一些你最熟悉的应用程序看看,本章最后还提供了几个简单的内核驱动
第八章:精彩已经过去,不要那么激动了,看看bootloader是怎么回事,一切都才开始。
天道酬勤
级别: 新手上路
UID: 6141
精华: 0
发帖: 10
金钱: 100 两
威望: 100 点
综合积分: 20 分
注册时间: 2009-05-21
最后登录: 2009-07-13
4楼  发表于: 2009-05-22 09:07

 回 3楼(26672624) 的帖子

你好,安装了LINUX,对原来的系统会不会有什么影响啊?
天道酬勤
天道酬勤
级别: 新手上路
UID: 6141
精华: 0
发帖: 10
金钱: 100 两
威望: 100 点
综合积分: 20 分
注册时间: 2009-05-21
最后登录: 2009-07-13
5楼  发表于: 2009-05-22 09:08
我心里没底,好久也迈不开第一步
天道酬勤
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
6楼  发表于: 2009-05-22 10:22

 回 4楼(yezhiwuwd) 的帖子

说清楚,哪里的原来的系统?PC?开发板?
如果是开发板,装了Linux就覆盖了板子上原来的系统,你不喜欢的话大不了按照手册重新安装回原来的系统
如果你说的是你的PC,你可以用Vmware装Linux或者装双系统,除了占用一点硬盘之外,不会对你PC上原来的操作系统有任何影响。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
天道酬勤
级别: 新手上路
UID: 6141
精华: 0
发帖: 10
金钱: 100 两
威望: 100 点
综合积分: 20 分
注册时间: 2009-05-21
最后登录: 2009-07-13
7楼  发表于: 2009-05-22 12:14

 回 6楼(kasim) 的帖子

哦,明白了,我说的是PC,谢谢啊!
天道酬勤
天道酬勤
级别: 新手上路
UID: 6141
精华: 0
发帖: 10
金钱: 100 两
威望: 100 点
综合积分: 20 分
注册时间: 2009-05-21
最后登录: 2009-07-13
8楼  发表于: 2009-06-03 14:55
#define GPF4_OUT (1<<(4*2))
#define GPF5_OUT (1<<(5*2))
#define GPF6_OUT (1<<(6*2))
#define GPF7_OUT (1<<(7*2))
请问括号里面的什么意思?
天道酬勤
天道酬勤
级别: 新手上路
UID: 6141
精华: 0
发帖: 10
金钱: 100 两
威望: 100 点
综合积分: 20 分
注册时间: 2009-05-21
最后登录: 2009-07-13
9楼  发表于: 2009-06-03 15:02
rGPDDAT= rGPDDAT&0xeff | 0x200;

//设置第八位输出为低电平,第九位输出为高电平

rGPDDAT= rGPDDAT&0xdff | 0x100;

//设置第八位输出为高电平,第九位输出为低电平
请问一下    0xeff           0xdff在这里面分别是怎么定义的?
天道酬勤