其实前一阵就开始了,但是没记下来,好多奇怪的问题也忘了怎么弄的了,所以还是写一些记录下来。
拿到开发板,首先做的就是下载源码了,
我是从用git弄的kernel源码,common分支的,好像是2.6.32的
拿过来源码当然就开始编译喽
一编译就出了问题
我这个是在 ubuntu9.10下面编译的,好像下的内核只支持64位的机器,所以要对内核进行一些修改
首先要修改内核的编译工具,不然会报
version `GLIBC_2.11' not found
额。。在源码里面找找,把
prebuilt/linux-x86/toolchain下面的arm-eabi-4.4.0的文件夹名字改成arm-eabi-4.4.3
原来的arm-eabi-4.4.3文件夹备份一下
然后修改一些代码,不然会报
Only 64-bit build environments are supported beyond froyo/2.2
先修改 android2.3/build/core/main.mk
#ifneq (64,$(findstring 64,$(build_arch)))
ifneq (i686,$(findstring i686,$(build_arch)))
然后修改 cgi cs java-jni util 目录下的Android.mk文件
# LOCAL_CFLAGS += -m64
#LOCAL_LDFLAGS += -m64
LOCAL_CFLAGS += -m32
LOCAL_LDFLAGS += -m32
之后继续编译,报了
out/target/product/generic/obj/lib/libOpenSLES.so: undefined reference to `typeinfo for android::SortedVectorImpl
修改方法为
1.将system/media/opensles/libopensles下的IAndroidEffect.c文件重命名为IAndroidEffect.cpp
2.将同文件夹下的Android.mk中的IAndroidEffect.c改为IAndroidEffect.cpp
这样编译是正常通过了
下一步就是烧写了
结果一烧伤就出问题了。。。system type 选错了
新下的内核中config里本身就带了对s3c6410的支持,我的扳子这里要选支持SMDK6410
之后内核是跑起来了
可是奇怪的问题又出现了。。。
Console: colour dummy device 80x30之后就全是乱码
但是如果开了boot logo 的话能显示小企鹅,就是说除了乱码其他没问题。。
去网上找了好久也没有一点有用的。。。
我觉得是串口出了问题 就打开了serial debug 发现问题是出现在初始化串口之后
唉。。。没办法,我就在源码里找啊。。。
后来在 driver/serial/samsung.c 里找到了报错的地方,console_init 函数里出了问题
由于是刚接触linux 内核,也不知道怎么改好
就一点点的printk
发现问题出在最后 return 调用的那个函数,是将串口的一些参数修改掉
我想啊,这串口本来不好好的么,要是不修改会不会好呢?
于是我进那个函数看了看,发现它正常返回 0
我就直接在console_init 中return 0了。。。。不要鄙视我,我什么也不懂。。。
接着再跑,乱码没了~
可是后面一些的地方又出了乱码了。。。唉
我就一层一层往里看,总算找到出问题的地方了
在 driver/serial/samsung.c里的s3c24xxx_serial_set_termios函数中出了问题
然后一点点printk 发现把wr_regl(port, S3C2410_UBRDIV, quot);注释掉就好了
说白了就是让它在重新设置串口的时候无效就行了
前面的那个问题也出在这个函数,不过需要注释掉的不是同一行,所以前面我还是让他return 0吧
这么改也只能解决一会的问题,以后这么做肯定不行的,等以后有时间研究研究代码在找好的解决办法吧
之后就能正常的跑到找文件系统了。。。不过提示找不到。。。。
还没解决。。唉,慢慢来。。。
本文记录了作者在使用嵌入式开发板过程中遇到的乱码问题及解决方案,包括内核编译配置调整、串口初始化修改等方面。
1083





