amlogic S905X udpate imge的压缩和解压

使用的板子是khadas VIM amlogic的升级和烧写有多种方式, 常见的是USB烧写和SD卡烧写. USB烧写的流程其实是解压update.img中的文件,然后push到RAM中运行. 然后再push文件到ram中烧写. 这个和Freescale的MFGTools类似. update.img的生成 生成update.img的命令如下,可以看到不同文件在update.img中被包含, 中括号里面是文件名字和分区名字, 这个信息在后面的解压中会被用到.

  Update.img的解压 参考下面这个地址中的.c文件 http://freaktab.com/forum/tv-player-support/amlogic-based-tv-players/s912/others-aml-s912/knowledge-tutorials-av/608116-how-to-recover-so-you-bricked-your-box 因为他的这个是为S912S为处理的, 对于S905X而言也是类似的, 同时因为他默认指定了一个打开的文件, 因此我改了一下:

Continue reading »

DragonBoard 410C中的Fastboot与调试串口注意事项

使用过的板子越来越多, 从FSL/NXP到三星, QualComm, Broadcom, Amlogic, MTK与海思, 还有NVIDIA Tegra.每一次使用板子做setup都需要去看一下Manual. 有些板子比较方便, 有些板子各种奇葩. 而记忆力又有限. 所以干脆以后每使用一个不同板子都记录一下. Fastboot mode 这一次用到的板子是DragonBoard 410C, QualComm的芯片. 死活进入不了manual上面的说道的fastboot mode. 结果发现原因是:

Continue reading »

Speed up Booting Embedded System

嵌入式产品的启动时间一般是一个指标,像大部分Android手机几乎没有为启动加速做过优化,可以改进的地方非常多。当然因为Android用得最多的地方是手机,难得冷启动一次。 用户从按下电源键开始,看到启动logo或者启动动画到出现可操作的Home/App画面,需要的时间越少,自然越好,产品的竞争力也越强。 一般没有系统的嵌入式设备启动都是上电即进入正常工作流程,这里只说linux/Android及类似的系统;下面将会简单的说明和列举从启动流程到各个启动过程都可以使用的方法,以及快速启动。 ☞启动流程 要做启动时间优化,需要对启动过程非常熟悉。下面从启动流程说起。 不同的嵌入式设备启动流程很可能不一样,但是绝大部分的linux/Android设备都是一样或者类似的。  ❤图片来源于:http://processors.wiki.ti.com/index.php/Optimize_Linux_Boot_Time ☞工具准备: 串口行间数据计时工具Grabserial的安装与使用 因为依赖python的serial模块,先安装它,在Ubuntu中安装python-serial:

获取工具脚本:

添加可执行权限:

设置以U-boot字符串出现为基准计时的使用示例:

如果要同一行内部计时,例如解压kernel的时候是在一行内的,可以使用-i选项:

我们从MMC出现时开始计时,以下为实例log,其中第一列为从出现指定字符串开始的计时,第二列为与上一行log的间隔:

Continue reading »

ARM Linux BenchMark

背景说明 许多公司有很多不同的ARM SoC的研发产品,ARM核心可能有Cortex-A8/A9/A15,核心数可能有单核双核和四核.现在,几乎每出一款手机,网络上马上就有人对其评测.对比和评测不同ARM SoC 芯片以及嵌入式系统是非常有必要的;通过不同的SoC和其运行的OS对比,可以帮助我们了解我们产品的性能,并根据测试得知系统的瓶颈、找出需要改善的方面。 嵌入式产品的硬件一般都是由处理器、主存、存储器、显示设备、以及其他外设组成。嵌入式产品的软件方面,一般都选用嵌入式系统,如小的RTOS,如VxWorks、μC/OS-III、RTT、DJYOS、FreeRTOSLinux,或者是更复杂的Linux、Android、WinCE。评测和对比的内容一般也主要由软件和硬件这两个方面组成。 预备基础知识 如果只是对Andorid系统或者是WinCE相关系统评测,那么我们完全可以下载一些应用(安装)运行即可评测。而如果要评测的嵌入式系统是基于Linux自己定制的甚至没有GUI的,则很可能需要我们下载源代码编译。因此对基础的编译知识的了解必不可少①。编译配置又与ARM SoC构架相关,所以需要了解一下与ARM构架以及有关的交叉编译的选项,比较ARM SoC种类较少,所以这类问题变得很简单了,一般我们需要根据需要配置-mfpu和-march以及-mfloat-abi,以及编译优化选项。 评测工具介绍 评测工具有很多,在这个网页列出了几十个工具。单单系统性评测工具就有7个。那什么是系统性的BenchMark(引用自unixbench): Do be aware that this is a system

Continue reading »

madpaly 移植到 TQ2440 遇到问题madplay not found (2)

上一次遇到了问题,在我确定各类方式无误后, 怀疑原因可能有两个: Reason1:  我安装的Ubuntu 11.10没有需要的那个libid3tag这个文件  编译时lib3tag源码包是不会产生这个的 Reason2:  我哪里设置有问题,即在那个 ./configure …..这里设置有问题. 对于Reason1 ,我换用了一个系统 用Ubuntu 9.10,结果,一次性就搞定了. 既然如此,说明可以了,那么将其中需要的库和二进制文件放入根目录对于文件夹中去试一试. 库已经放入到/usr/lib中,而madplay则已经放入了/bin和usr/bin中 因为用的是nfs根文件系统,拷贝过去后发现是不可以的. 这个是什么原因呢? 回答一楼的问题:【Update Date

Continue reading »

madpaly 移植到 TQ2440 遇到问题 libid3tag was not found (1)

=============================================================================== 上一次构建根文件系统的时候留下了几个问题 第一是没有区分uImage和zImage 第二是对U-boot传入参数的有问题 对于第一个问题,就是需要知道什么时候用的是zImage什么时候是uImage 对于第二个问题,在u-boot中可以直接改变环境变量既可, 如TQ2440的是0选项中的NFS 选项 =============================================================================== 昨天遇到的问题: 1:     弄nfs filesystem 因为一个错误耽误了一天时间 .这个错误是在填入路径的时候没有到达底层 eg /home/tonyho/nfs/rootfs 将后面的rootfs省掉了,这样子就无法被挂载找到/bin sbin 等目录了,改了后就好了.

Continue reading »

TQ2440根文件系统直接编译进内核

直接用TQ2440提供的源码linux2.6.30.4, 然后用其提供的busybox.1.16.0 在(make menuconfig中)没有选中Initial Ram… 时是这样的 看到这里,大约知道除了根文件系统有问题外,其他没有问题. 将文件系统编译进去,遇见问题: make zImage ARCH=arm后,下载zImage.bin到TQ2440,启动系统后居然是这样: 看来这个问题不小,直接bad gzip了 Question1: 该如何解决呢? 不管它继续用uboot的另一个功能 Test Linux Image(zImage) :

Continue reading »

课程设计: 可以用上位机改变下位机的多功能闹钟

功能 时间 — DS1302 温度 — DS18B20 温度报警 闹钟 修改日期时自动更改星期 上位机改变下位机单片机的DS1302时间 闹钟时间 温度报警上下限值 可以通过键盘改变DS1302时间 闹钟时间 温度报警上下限值 改变值时光标会闪 可以控制闹钟的开关并在第一页上显示符号 年月日时分秒的临界值控制 平年闰年对应的二月判断

Continue reading »