典型问题:
问题1、Rdx速度慢,一个包8ms左右
ack正常,删掉log,时间17us,正常。
odin速度慢,一个包50~200ms,删除log,前900K正常,ack正常。判断逻辑处理有问题,
epx 处理数据大小有问题
问题2、bootloader下载后开不了机。
pit分区和mtk分区不匹配。pit是我们自己定义的。mtk定义方式和pit不同。
mtk启动过程读的分区是partition_layout[0],这个结构提是编译过程生成的。
partition_define.h, 这个文件是编译生成的。抽取partition_table_MT6574.xls生成这个头文件。
preloader, uboot分别include这个头文件,查找各分区信息。
问题3、接收到的ram_base的数据相比img, 有512byte的偏移,why ???
xmit_date,epx read_fifo 有512的leap ? 全0. why ??? count=0,buff不会加512. 每次usb_read,第一个包可以读到count=512,但是里面全是0. why???
这个不确定是不是odin发的00,因为没有odin资料,无从查实。
Test:确认是否每次从xmit_data过来,第一个512都是0 ?如果是,则忽略这个512byte包。
workaround: if(first_xmit ==1) count = len = 0; ???
问题4、kernel烧进去可以启动,uboot烧入启动不了
检查发现,从emmc uboot位置读到的数据,最后372byte 全0。
(1) 在mmc_write_ss()之前, 读base ram的700多个byte.发现这里都是正常的。
(2) 那么,是写入时还是写入后 372byte被清0呢???
解决: mmc_write只写512的倍数,372之前的长度是512倍数,剩下的372byte没写。
修改mmc_write解决。
问题5、system.img 烧进去开不了机。
目前发现分区首地址有问题。首地址少40byte, 30m的地方少352byte(22*16)
原因:system.img通过sparse方式编码,SP Flash Tool对img解码再烧的,odin没解码,所以烧进去的img开不了机。
解决:
方案一、
./simg2img system.img system_temp.img
mkdir temp
sudo mount -o loop system_temp.img temp
sudo ./make_ext4fs l <size of output file> system.img temp
方案二、
在
alps/device/mediatek/$proj/AndoirdBoard.mk
添加:
TARGET_USERIMAGES_SPARSE_EXT_DISABLED:=ture
方案三、
在nand_write添加sparse解析代码。 A3等项目本身就有,直接可以用。
sparse img:
system.img, 380M
cache.img, 6.5M
userdata.img, 20M
custom.img, 7M
问题6、烧preloader开不了机
emmc分区前4block保留,不能写,preloader从4block开始写入。
但是但烧preloader发现开不了机,只能和MBR一起烧。???
PS: MBR 在前面,fail; MBR最后烧,success???,补烧MBR success
结论:只要MBR 在preloader后面就可以. why