需要一次大甩卖

July 17th, 2010

卖示波器 一台模拟一台数字, 卖各类运放,卖电源ic,卖光电开关,卖st的cortex-cm3 mcu多量。。。如果有时间的话

仔细请点了一下,没想到有这么多项目残留物体,有些ic还是整条的,用来当仓库的房间已经塞满了,一定要处理一下了。。。如果有时间的话

该整理一下了

July 17th, 2010

感觉这段日子过得很快,很多问题也浮出水面,到了整理一下的时候了。

书在桌上越堆越高,不过已经没有闲书的踪影了,这就是所谓专注么。

马上就面临硬仗了,全新的领域,必须120%的投入。

有想法和方案就赶紧动手,别想太多了。

私人的时间就暂时不要了吧。。

可还是忍不住会想你。

重装系统。。。

June 16th, 2010

这两天看球,顺便重装了系统,因为需要切换到64位。
32位的系统是02年开始使用,之后换了两次电脑也一直没重新装过,现在需要切换到64位,终于可以重新装一次了。
安装顺利。。64位桌面很成熟鸟,二进制发布的软件也对64位支持甚好,只是baidu vpn的client需要32位的java vm,略折腾了一下。

昨天在大悦城逛了逛apple店,决定下一个电脑是mbp。

Intro To Erlang

May 9th, 2010
不错的介绍,转载来标记一下,待细看
Intro To Erlang
View more presentations from asceth.

在豆瓣认领自己,again

April 28th, 2010

doubanclaim5b6101043a94526d

逃离

April 27th, 2010

决定不忍备案了,在境外找了服务器,但是。。。

为什么python版本那么老!! 2.3。。。

Hello world!

April 27th, 2010

Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!

Build Android Splash Screen

March 13th, 2010

累了,搞点轻松的玩意。

convert -depth 8 splash.png rgb:splash.raw rgb2565 < splash.raw > splash.raw565

然后把splash.raw565烧入flash就好

fastboot flash splash1 splash.raw565

Android Notes [system view]

December 27th, 2009

android系统是一个典型的嵌入式linux,基础是linux kernel,整个android框架运行于一个称为dalvik的虚拟机之上,因此app是平台无关的,如果没有使用特殊的硬件,在armv6上运行的app可以直接放在android on mips中一致运行。事实上android为常用的硬件(gps,加速度感应等)提供了jni的接口,移植时只要重新把硬件操作包裹成.so供框架调用。

flash分为几个block:

# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00040000 00020000 “misc”
mtd1: 00500000 00020000 “recovery”
mtd2: 00280000 00020000 “boot”
mtd3: 05a00000 00020000 “system”
mtd4: 05000000 00020000 “cache”
mtd5: 127c0000 00020000 “userdata”
mtd6: 20000000 00020000 “msm_nand”
#

boot存放kernel和ramdisk,dump出来后需要split_bootimg.pl或者unpack-H.pl来把两者分离出来。boot区的结构如下:

format (from bootimg.h)
** +—————–+
** | boot header     | 1 page
** +—————–+
** | kernel          | n pages
** +—————–+
** | ramdisk         | m pages
** +—————–+
** | second stage    | o pages
** +—————–+
**
** n = (kernel_size + page_size – 1) / page_size
** m = (ramdisk_size + page_size – 1) / page_size
** o = (second_size + page_size – 1) / page_size

header中存放kernel和ramdisk的偏移信息:

header_format (from bootimg.h)
struct boot_img_hdr
{
unsigned char magic[BOOT_MAGIC_SIZE];

unsigned kernel_size;  /* size in bytes */
unsigned kernel_addr;  /* physical load addr */

unsigned ramdisk_size; /* size in bytes */
unsigned ramdisk_addr; /* physical load addr */

unsigned second_size;  /* size in bytes */
unsigned second_addr;  /* physical load addr */

unsigned tags_addr;    /* physical addr for kernel tags */
unsigned page_size;    /* flash page size we assume */
unsigned unused[2];    /* future expansion: should be 0 */

unsigned char name[BOOT_NAME_SIZE]; /* asciiz product name */

unsigned char cmdline[BOOT_ARGS_SIZE];

unsigned id[8]; /* timestamp / checksum / sha1 / etc */
};

这样系统就可以在启动时找到kernel和ramdisk。

ramdisk结构如下

$ tree root -p
root
|– [drwxr-xr-x]  data
|– [-rw-r--r--]  default.prop
|– [drwxr-xr-x]  dev
|– [-rwxr-xr-x]  init
|– [-rw-r--r--]  init.goldfish.rc
|– [-rw-r--r--]  init.rc
|– [-rw-r--r--]  init.sapphire.rc
|– [drwxr-xr-x]  proc
|– [drwxr-xr-x]  sbin
|   `– [-rwxr-xr-x]  adbd
|– [drwxr-xr-x]  sys
`– [drwxr-xr-x]  system

android不使用init.d管理启动过程,init读取init.xxx直接管理启动过程,主要完成重要目录、文件、环境变量的建立,挂载block,启动服务等。

system block存放系统目录,启动的时候ro挂载在ramdisk的/system下:

$ tree -p system -L 1
system
|– [drwxr-xr-x]  app
|– [drwxr-xr-x]  bin
|– [-rw-r--r--]  build.prop
|– [drwxr-xr-x]  etc
|– [drwxr-xr-x]  fonts
|– [drwxr-xr-x]  framework
|– [drwxr-xr-x]  lib
|– [drwxr-xr-x]  usr
`– [drwxr-xr-x]  xbin

framework存放android框架文件,app存放系统自带的apps,以.apk的形式,不可由用户卸载。其他的目录沿袭linux传统。

userdata block存放用户数据,启动的时候rw挂载到/data,用户安装的apps存放于这里,apps的配置文件也在此目录中。

recovery block 存放一个小型的rootfs,recovery模式启动的时候会挂载此区域,此时系统一些基本的功能用于备份还原等管理功能。recovery模式下init过程较为简单,启动adbd服务后就执行recovery程序接受用户操作:

$ tree -p recovery -L 3
recovery
`– [drwxr-xr-x]  root
|– [drwxr-xr-x]  data
|– [-rw-r--r--]  default.prop
|– [drwxr-xr-x]  dev
|– [drwxr-xr-x]  etc
|– [-rwxr-xr-x]  init
|– [-rw-r--r--]  init.goldfish.rc
|– [-rw-r--r--]  init.rc
|– [-rw-r--r--]  init.sapphire.rc
|– [drwxr-xr-x]  proc
|– [drwxr-xr-x]  res
|   |– [drwxr-xr-x]  images
|   `– [-rw-r--r--]  keys
|– [drwxr-xr-x]  sbin
|   |– [-rwxr-xr-x]  adbd
|   `– [-rwxr-xr-x]  recovery
|– [drwxr-xr-x]  sys
|– [drwxr-xr-x]  system
`– [drwxr-xr-x]  tmp

$uname -a

November 26th, 2009

Linux localhost 2.6.21.7 #143 SMP Thu Nov 26 01:46:05 UTC 2009 mips GNU/Linux


Switch to our mobile site