博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

CalmArrow

【打好基础】全力以赴,顺其自然【每天进步一点点】
  piaoxiang.cublog.cn

关于作者
姓名:CalmArrow(lqm)
职业:硕士在读
位置:山东济南
研究:嵌入式系统设计
联系:calmarrow@gmail.com

信仰:
    1、永远保持积极向上(积极的心态,积极的思考,积极的行动),享受生活给予的一切!
    2、做正确的事,正确的做事;用心去做,做到最好!
    3、如果你觉得不幸福,那么请你把幸福的门槛降低一些,不要把幸福拒之门外。。。

目标:
    软硬结合,打好基础,提高学习能力,完善知识体系,建立核心优势。

方法:
    理论与实践相结合
    深度与广度相结合
    理解与记忆相结合

说明:
    本Blog仅供学习之用,转载文章如涉及版权,请通知。原创作品如转载,请注明出处。
|| << >> ||
我的分类


深圳英培特EDUKIT-III(S3C2410)研究

文章说明:calmarrow(lqm)原创

文章引自:http://piaoxiang.cublog.cn

 
2007-07-19
 
    从学校实验室借出EDUKIT-III实验箱有很长时间了,一直没有静下心来深入研究。有多个原因:一是ATMEL AT91RM9200先入为主,其开发思路限制了自己的思维,相比之下,始终认为S3C2410的开发工具使用不方便,开发流程太复杂。二是一种古怪的思想统治着自己,就是想所有的工作都在Linux下完成,完全摆脱windows的束缚。三是自己的软硬件知识储备还不够,很多地方并不是仅仅凭借努力就能深入认识的。
 
    在思想上走了几个弯路后,现在算是回归正途了。
 
    首先,AT91RM9200和S3C2410都是非常成功的,只是它们的定位不同。AT91RM9200定位于工控、无线数传领域,是工业级产品,而S3C2410定位于高级电子消费领域,是民用级产品,在外设、技术指标上就有很大的不同,这都是在定位后权衡各方面情况后的最佳结果。
 
    AT91RM9200片内ROM固化了一部分代码,可以认为是一级bootloader,提供了多种bootloader的写入方式,在初始开发阶段,只需要一个DEBUG口就可以完成所有开发工作,更加方便。S3C2410则复杂一些,必须要依赖于JTAG来写入。其实,它们扩展了你的思维,是你能认识更为深入。正所谓“条条大路通罗马”,见识到了多条路,思考并且理解为什么走这条路,走这条路相对于其他是否更为有利......就我而言,这种思考必然会带来很多问题,但是当你解决了这些问题,你的认识就上升了一个层次。这是一个螺旋式上升的过程,思考得越多,你的收获也就越大。而这些都将转化为你的经验。每一个产品的成功都有其成功的因素,你需要学习这些,然后消化吸收。通过比较不同,你会明白一个产品的定位对产品的设计是多么重要。
 
    其次,重要的是思想,而不是工具。Windows和Linux是两种不同的操作系统,我觉得它们都是成功的。对我而言,知道要做什么,那么就应该去寻找最为高效、最为方便的方式去实现,不管是在Windows下还是Linux下。所有那些只是你实现思想的工具而已。不偏激,慢慢中庸,这样似乎更好一些,学到的东西更多,思路更开阔。当然,在这之前,应该有几件最为趁手的工具,这是我在学生阶段需要培养的。
 
    再次,只有有相当的理论积累和实践经验,才能使认识更深入一层。理论和实践同样重要,看看你自己最适合做什么方向。不管做什么,都需要去除浮躁,静心研究。
 
    下面开始记录EDUKIT-III的研究历程,不打算集中在这一篇文章,这个只是一个流水帐,也可以算是心情日记。具体的工作要分类总结在相应的文章里。这个暑假就是研究S3C2410了,会很充实的。
 
    提前声明一点:现在提到的研究是针对带OS Linux的开发,不带OS或者带其他OS这个暂时不在考虑之内。核心内容是bootloader-->kernel-->fs-->application,慢慢来,务求深入。
 
(1)首先谈一下使用深圳英培特这款教学平台的感受。去年暑假使用的AT91RM9200是商业产品,品质等各个方面都非常好。于是对ATMEL的印象非常好。EDUKIT-III这款教学平台采用了底层板跟核心板的双层设计,优点就是增加了灵活性,缺点就是存在接触不良的问题。我在使用的时候,不断遇到这个问题,不动核心板的前提下,第一次成功,第二次可能就失败,很不稳定,也是比较烦人的问题。光盘资料说明文档内容存在交叉,我想要完成一件事,有两处README给出两个不同的操作,又没有额外的提示,只有两种情况都尝试。所以,仅凭这点,对这款教学平台的印象大打折扣。只是自己如果买开发板,还是比较贵的。有句话:想办法,不要逃避。这款教学平台的外设非常丰富,代码资料也很全,这是其他开发板所比不了的。所以,静下心来,想办法,慢慢去学。
 
(2)基本流程:移植bootloader --> 移植kernel --> 移植fs --> 增加自己的应用程序。
 
    bootloader准备选用vivi,比较小巧,深入研究一遍后,可以考虑移植U-boot,这个的移植工作量相对大一些。
 
    kernel准备选择2.6的核,最新内核已经加入了对S3C2410的支持,并且还有对nand flash的支持。功能上更为稳定,这样也更加主流,不一定受限于mizi的OS。
 
    fs则要进行多种尝试,cramfs、yaffs等都要尝试一下,而且要认识到各个fs的优缺点,争取采用多个fs组合的方式,实现更为强大的功能。
 
    application方面想要实现mp3播放功能,数据网关(串口转网口)功能,USB摄像头的视频监控功能。这些可以逐步的来,做到这里的时候,可能会返回去重新编译内核,重新修改fs,如果开始vivi分区设计不好,可能要重新编译vivi。
 
    从网上读到一篇文章,博主谈到老师有这样的话:
 
    “当拿到一个问题的时候,首先要到网上搜搜,看看有没有类似的问题,如果有就下载下来。然后看看别人如何解决这个问题的,在别人的基础上解决问题。反之,如果你拿到一个问题就在那里闷头想,然后费了老大劲作出来,你是傻子,你这是闭门造车,完全忽视人民群众的力量,当然人民群众也可以忽视你!”
 
    “我站在喜马拉雅山的半山腰,前进了不到100米;你平地而起,辛苦造了2000多米的山,你确实比我前进的多,但是我仍然高于你!”
 
     读了这两段话,深有感触。以前一直想所有的东西都从头自己做起,这是不现实的。正确的方法如同学习书法,开始的时候要临摹,临摹好了然后创造自己的风格。在临摹的过程中,多思考,多参考前辈临摹的经验,而且要过滤掉不适合自己的经验。所以,在实践开发或者学习过程中,最为重要的是思考和利用网络搜索到有价值的资料的能力。
 
    如是,努力!

发表于: 2007-07-20,修改于: 2007-12-02 09:25,已浏览1722次,有评论11条 推荐 投诉


网友评论
网友: piaoxiang 时间:2007-07-23 08:28:28 IP地址:122.4.32.★
2007-07-21
    vivi简单的移植成功了。工作量少的可怜,主要是因为这个bootloader是专门为S3C2410/S3C2440等几款MCU来设计的,而国内的s3c2410大多是采用公版,改动很少(可能是争取time-to-market)。使用中发现vivi的架构完全仿照Linux kernel,看上去比较熟悉;vivi只有串口下载功能,这样在下载kernel映象和fs时就太慢了。所以下面有两步工作,一是学习vivi的源代码,二是增加vivi功能。可以仿照vivi,自己做一个适合自己开发板的bootloader,不求通用,但求稳定。工作还是比较多的,慢慢来。。。

网友: piaoxiang 时间:2007-07-26 21:24:56 IP地址:222.194.44.★
2007-07-26
    虽然读vivi有点累,但是学到很多。以后自己也要能写出这样的代码。

网友: piaoxiang 时间:2007-07-30 18:37:31 IP地址:64.62.138.★
2007-07-30
    vivi的软件架构和配置分析都已经完成了。现在进入源代码分析学习阶段。发现要想透彻的了解这些,需要从一些基本的实验做起。在做这些基本的实验的时候,要尝试采用ARM汇编和C语言两种方式,以尽量完善的标准去做。另外,对ld,as等工具也要在这个阶段逐步的熟悉。看来计划要相应的推迟了。调整为:首先根据《S3C2410完全开发》来熟悉基本实验,然后再分析源代码,修改源代码。

网友: piaoxiang 时间:2007-07-31 11:30:23 IP地址:64.62.138.★
2007-07-31
    搜集了关于ARM体系结构,Gnu开发工具的资料,比较全面了。由于原先计划对读vivi源代码需要的基础估计不足,所以需要对计划作出调整。接下来的一段时间,分为三个阶段去努力。第一个阶段:学习Gnu as,ld,objcopy,linkers and loaders等工具。第二个阶段:学习ARM体系结构,结合s3c2410基础实验进行。第三个阶段:阅读vivi源代码。所以,vivi开发笔记5只能暂时中止,先来打基础。

网友: piaoxiang 时间:2007-08-04 11:30:47 IP地址:122.4.32.★
2007-08-04
     现在继续vivi基础实验,完成sdram的理解和分析。逐步深入的去了解s3c2410,感觉它上面有不少很奇怪的设计,可能是历史的原因,现在MCU设计很多都改进了。

网友: piaoxiang 时间:2007-08-08 19:22:30 IP地址:202.194.20.★
2007-08-08
    完成了nand flash、uart、interrupt几个实验,都是最基本的。每个外设功能部分要想深入都可以钻研很长时间,视当前的知识储备和思考状态而不同。在学习vivi的主线下,尽量拓展相关的知识,这种学习方法更适合我,虽然进度会慢一点。在这个过程中,要体会如何更加有效的自学,如果积累技术,如何突破。慢慢来,走稳走好。。。

网友: piaoxiang 时间:2007-08-09 20:16:33 IP地址:202.194.20.★
2007-08-09
    忙于理解学习ARM中断技术和调试技术,项目主线进展暂停。

    不过支线学到的东西似乎更多一些,了解了越来越多原来在书本上看到,自以为了解,却什么也不懂的东西。现在倒是不敢随便说懂了,理解不透彻是谈不上懂的。

    事物认识的规律都是由浅入深的,所以,先掌握基本,然后提高。Take it easy,and you will understand it totally at some time!

网友: piaoxiang 时间:2007-08-16 20:47:41 IP地址:202.194.20.★
    这两天看MMU部分,比较辛苦,收获也很多。从软硬件结合的角度去看问题,会更加清晰。

网友: piaoxiang 时间:2007-09-04 11:29:10 IP地址:122.4.41.★
2007-09-04
    回家呆了几天,回来后一直没有看vivi。从中看出一个道理:一件事情,闲置地太久,就会失去继续进行的兴趣。反之,在空闲时间,每天都能进展一点点,那么最终会顺利完成。

     所以,继续进行,分析vivi源代码。

网友: cagefans 时间:2007-11-15 10:14:07 IP地址:61.177.142.★
同感,我也用这个,他们的文档不好,板子资源好,IDE一般好用.
,问你个:在2410的板上调中断的程序,要在0地址放interrupt vector ,
如果你去用IDE在JTAG下到RAM,而在0地址又没向量表,你怎么解决. 

Blog作者的回复:
想到的一个方法是,开头增加一段代码,包含中断向量表,和把sdram通过MMU映射到0x0部分。具体可以再考虑。
另外,我一般不使用它的IDE,还是在Linux下通过原始方式调试。


网友: jesfei 时间:2007-11-30 10:08:10 IP地址:211.81.255.★
我也在做嵌入式系统的研究,我买的ARM9开发平台不带JTAG,能不能用其他的工具来代替它啊?

Blog作者的回复:
不知道您用的哪款?如果是AT91RM9200,或者EP93XX,可以只用调试串口就可以。如果是S3C2410,则必须用JTAG(可以是接仿真器,也可以用简单的JTAG小板+Host调试代理)。具体理解看看:http://blog.chinaunix.net/u/21948/showart_274141.html
应该了解一下调试模型是怎样的,了解硬件上电之后的流程,了解如何固化。


 发表评论