1) 经过多方确认,S5P4418不是由三星设计的,应该是由韩国Nexell设计的,很多地方都不是三星的风格,CPU上还印有Nexell的标志,很有可能是三星转让了ARM A9授权给了Nexell,不能一个方案提供商有那么大能耐让三星在CPU上面别的公司的名字
2) GPIO使用有问题
S5P4418不像三星的其他CPU,GPIO功能00为输入,GPIO功能01为输出,GPIO功能10和11为片内模块IO
需要查看S5P4418 Datasheet,第2.3节 I/O Function Description,根据对应的引脚功能进行设置(很挫的设计)
驱动程序中使用NX_GPIO_PADFUNC_0、NX_GPIO_PADFUNC_1、NX_GPIO_PADFUNC_2、NX_GPIO_PADFUNC_3这三个宏
可能某个引脚输入功能是NX_GPIO_PADFUNC_2,而输出功能是NX_GPIO_PADFUNC_1
很挫很挫很挫的设计,说三遍
3) 保留内存问题
Nexell提供的Kernel,有大概200MB的内存是预留给ion使用,启动后可用内存大概是800MB
device.c中nxp_reserve_mem函数用于设定参数,参数可通过make menuconfig修改,路径为
4) 摄像头的使用
Nexell封装了v4l2,提供了一个c++库,虽然这个库设计的很挫,但至少还能用
5) 库和Demo程序
Nexell提供了很多库和Demo,路径是android源码下的linux目录,有一个platform,里面的s5p4418,里面有很多Nexell的资源,apps里面是一些demo,Solution是一些整体的解决方案,里面DVR、IPC方案等等
有些开发板厂商提供的源码没有platform这个目录,很有可能他们为了赚钱,删掉了
6) 硬件看门狗
由于PCLK的频率是200MHz,看门狗模块最大分频是256 * 128,为6103Hz,WTDAT只能使用16位,最大只能填入65535,这样一来,最长10.8秒不喂狗,就会复位
最坑爹的是WTCON的中断使能一定要打开,不打开超时不会复位
(完,暂时想到这些,已经开始使用其他平台,暂时放弃此平台)