[MTK6574] 移植odin问题总结

典型问题:

 

问题1Rdx速度慢,一个包8ms左右

ack正常,删掉log,时间17us,正常。

odin速度慢,一个包50~200ms,删除log,前900K正常,ack正常。判断逻辑处理有问题,

epx 处理数据大小有问题

 

 

问题2bootloader下载后开不了机。

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; ???

问题4kernel烧进去可以启动,uboot烧入启动不了

检查发现,从emmc uboot位置读到的数据,最后372byte 全0。

(1)      在mmc_write_ss()之前, 读base ram的700多个byte.发现这里都是正常的。

(2)      那么,是写入时还是写入后 372byte被清0呢???

解决: mmc_write只写512的倍数,372之前的长度是512倍数,剩下的372byte没写。

修改mmc_write解决。

 

问题5system.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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值