打印
[嵌入式linux]

开源代码探索周记.

[复制链接]
2871|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
icecut|  楼主 | 2012-6-14 22:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

源代码解析六月还真的放下了.已经好久不再去碰他.估计还有不知几个月才能继续拿起来了.

最近探索安卓的源代码,从头开始搞.这是 一个坚韧的历程.敢如我冒险的人不多.
首先是选一块板子,当然不要选什么6410啥的,那个价位的已经跟不上安卓的发展,当然也不能选panda,这个价格不是 一般人能承受的起.我选择一个当年在新闻上灰常牛X的板子,当然那个灰常牛X的芯片还在娘肚子里,只不过大哥先出来了.售价16刀,不过也不能说什么,毕竟我是吃螃蟹的,买的开发板是工程样片版.当然,ti官方说是量产了,但是我不承认.因为在我使用的过程中,的确还是像一个工程样板.比如jtag 使用32bit读总线就非常稳定,反而8bit读总线就容易死机.jtag复位芯片的时候发现不太稳定,怎么说我复位之后pc也应该是0吧,不过按键复位还是能复位的.否则,这工程样片就该扔垃圾箱了.

好了,就他了,谁让我是从芯片公司出来的呢.

不过我想告诫那些买beaglebone和am335x这颗明星芯片的人,这绝对是一个绝佳的学习机会,你将遇到所有开发板都遇不到的挑战.你能学到最多的东西.当然,道路是曲折的,曲折不一定是暂时的.好的是ti提供了基础平台,只要你不追求用最新 的安卓,那一切嗲不不麻烦.Linux的更新比较快,基本上跟着最新内核一直在更新.如果你用安卓,那就悲剧了,安卓是不支持最新的内核,因为omap家族有一只熊猫被姑姑看上了,成了标准测试环境,也进入了市场手机中,所以这个狗骨头,应该改名叫**骨头,真是食之无肉,弃之有味.当然,如果你**不懈的把狗骨头啃完了,或许,下次弄个狗腿什么的,也就容易吃了.不至于拿着狗腿没处下嘴.

最近一时兴起,准备将最新的安卓移植到狗身上,当然这块狗骨头让我想起当年我想吧官方的Linux移植到友善的2440上,当然现在的Linux里已经有了mini2440的移植代码.那时候,与现在搞beaglebone一样,编译没问题,下载进去一个串口命令都打不出来.狗娘养的....可怜了那时候,网络发达但写手很少,拿着一个配置gdb不成功的jlink,,根本难决定何处下手.不过现在好像真正确分析好启动代码的**也很少.让我对最前面提到的工程还是信心百倍.能看懂启动代码的懒的写博文,看不懂的,难以知其奥妙.真是悲观至极.但是现在的我,已经不是4年前的水平,已经是一个骨灰级人物了.虽然我是骨灰级人物,当然也不是傻了吧唧的去从头啃代码,问问谷歌我就知道哪个文件控制这输入,grep一下.就知道啥问题了.当然,我还要确认一下硬件有没有问题,用我们陆老大的办法,直接用openocd写一个字符到串口缓冲区,呵呵,就验证了硬件的完好.软件上也跟简单,增加一个匹配项,让他支持这个开发板就行了.如果你还不知道,就多看看那几个宏定义吧.容易,非常容易....

那个解压缩内核的命令就顺利的打印出来了.然后...又开始了永久的沉默.....

这个沉默就解决起来 有点麻烦了...为了省事,我使用了omap3beagle,虽然这个已经并入Linux主线,当然,这还是给beagleboard开发的,狗骨头还是不太适应.更不太适应的是狗骨头的uboot提供的体系结构代码还是一个专有的,根本没理已经出世的狗兄弟.真是不团结啊.找到这个问题,还是缘起Linux的log_buf,在串口打印信息输出之前,Linux是有一个空窗期的,这段时间出现的问题,都是沉默.因为串口输出的信息,都因为没有初始化串口而被关在牢房里.狗啊...放他们出来吧.这个时候mmu已经打开,原理串口地址不能用于数据输出了.偏偏这个时候挂了.叫天天不灵叫地地不应.只能找个刺客进去看看.我halt住cpu.看看pc的地址.当然,第一件是查户口薄,妈的那个函数这么气人,把我的函数给关进去了?当然函数是找到了,System.map还是没白生成.不过这还是一条弯路.System.map有更好的东西告诉你,那就是log_buf,这个变量所在的地址的值是串口缓存的地址,第一个问题进去一看就知道,是体系id不支持,然后死循环....修改方法还是和加串口一样.这个直接把omap3beagle的id改成beaglebone的,虽然是一个爹养的,但是双胞胎毕竟是双胞胎,很多函数的处理还是不一样的.本来想把beaglebone的代码移植过来,发现依赖太多,Linux版本不同,又不好打patch.那就继续看代码吧.这样还能增进功力.其实好的代码写的都很简单.不像中国人的产品,写的别人能看懂就好像自己很没水平,一堆堆的山寨代码除了扔垃圾箱,就没别的用.刚刚骂我中国人的代码,也发现ti也没好哪里去,当然,这些混蛋代码估计出自ti中国...虽然没有找到中国人的签名,但是omap3xxx这个函数认为会兼容后续设计,最后却发现tmd为什么人兼容不了omap am33xx呢.脑残的codeman有写了一个函数叫omap33xx,我估计不用ti的孙子,再出一个芯片有tmd就支持不了了,到时候就要写一个omap336x了...狗娘养的,多定义一个宏会死人还是改一个宏的名字会死人,非要复用ti18xx的宏定义给beaglebone!你说给狗弄上一堆染发剂,不论不累的领出去不怕丢人?当然,这些东西都在
mach-omap里面,Linux不会去做规范性审核,既然你愿意在家里丢人,Linux懒的理你.悲剧到现在我还想先去看看Linux移植团队是怎么写的,但愿和安卓移植团队不是一伙的.那样我还能有一个好的代码参考库....今天就写到这里...且等下回分解

相关帖子

沙发
icecut|  楼主 | 2012-6-14 22:50 | 只看该作者
这篇**应该@ti mcu 论坛...看看那帮人会啥感觉

使用特权

评论回复
板凳
yyplc| | 2012-6-17 17:32 | 只看该作者
:lol楼主搞什么呀,那么高深

使用特权

评论回复
地板
itelectron| | 2012-6-17 22:42 | 只看该作者
4年了  和楼住 的差距大了   现在 和以前 有交集  楼主 大牛 能不能解答我在外面请教的 问题啊?

使用特权

评论回复
5
icecut|  楼主 | 2012-6-18 13:42 | 只看该作者
4# itelectron
啥问题?站内发我了吗

使用特权

评论回复
6
lxyppc| | 2012-6-18 14:55 | 只看该作者
楼主爱折腾

使用特权

评论回复
7
itelectron| | 2012-6-19 18:27 | 只看该作者
8
tiger84| | 2012-6-22 22:45 | 只看该作者
小i有没有探索出发财之路哈?

使用特权

评论回复
9
icecut|  楼主 | 2012-6-24 21:52 | 只看该作者
8# tiger84 弄个搞精度印刷机啊...

使用特权

评论回复
10
一朝成名| | 2012-6-25 13:02 | 只看该作者
几年前玩过beagleboard  OMAP3530的soc,基本都从新debug了一遍。。。。

还好最难的DSP那部分还能跑起来能用。。。

使用特权

评论回复
11
icecut|  楼主 | 2012-6-25 18:36 | 只看该作者
10# 一朝成名 ti的电源管理竟然是一个bin文件.

使用特权

评论回复
12
一朝成名| | 2012-6-26 17:12 | 只看该作者
10# 一朝成名  ti的电源管理竟然是一个bin文件.
icecut 发表于 2012-6-25 18:36

当时电源管理没做,因为不害怕功耗。。好几年了,都忘记了。
反正悲剧了好久,官方下载的kernel都跑不起来 fixbug好几个地方

使用特权

评论回复
13
charlydady| | 2013-3-4 17:09 | 只看该作者
你好,我是搞FPGA的,最近在和335X的McSPI通信(FPGA主,335x从),我通过接收335X的中断信号去读他的数据,但是不是每次都中断都能有数据(示波器看的),而且读的数据也不是他所发的00-0F,搞335x的技术人员解释是他只管写数据,写完后就不受他控制了,就有335X去处理,什么时候发,什么时候发完他都不能确定,而且335x工作的从模式是他从现有的主模式改来的,不知能不能正常工作。335X是先给写数据到缓存,在给中断的,我对335x和linux不懂,请解惑!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:个人发展,技术咨询,点此  嵌入式arm爱好者←← +→→点击-->小 i 精品课全集,给你全方位的技能策划~~←←

1120

主题

15358

帖子

585

粉丝