how to cross build a git package from Android GIT?
make CROSS=arm-none-linux-gnueabi-
2009年7月21日 星期二
2009年7月15日 星期三
find_all_modules.sh
#!/bin/sh
#find_all_modules.sh
for i in 'find /sys/ -name modalias -exec cat {}\;';do /sbin/modprobe --config /dev/null --show-depends $i;
done |rev|cut -f 1 -d '/'|rev|sort -u
#find_all_modules.sh
for i in 'find /sys/ -name modalias -exec cat {}\;';do /sbin/modprobe --config /dev/null --show-depends $i;
done |rev|cut -f 1 -d '/'|rev|sort -u
2009年7月12日 星期日
RAMDISK
http://plog.longwin.com.tw/my_note-unix/2006/01/08/ram_disk_build_method
拿 RAM 當硬碟來用(RAM Disk)
臨時想要做個 RAM Disk, 就去翻以前寫的文章, 發現以前的 Blog 寫的真的是很亂, 還是重新整理一下好了.
目前的作法如下:
首先在/dev/shm建個tmp文件夾,然後與實際/tmp綁定
mkdir /dev/shm/tmp
chmod 1777 /dev/shm/tmp
mount --bind /dev/shm/tmp /tmp
方法2:
mkdir /mnt/ramfs
vi /etc/fstab
none /mnt/ramfs tmpfs defaults 0 0
mount /mnt/ramfs
這樣就可以用這個 ramfs 來放一些有的沒有的, 可 man mount, man fstab
方法3:
mount -t tmpfs -o size=200m none /mnt/tmpfs
200m 是 200Mb 的意思, 詳情請看 man mount 裡的 tmpfs
方法4:
設定 /etc/default/tmpfs default shm 大小(系統會自動用此值去當硬碟)
設定 /etc/fstab: tmpfs /tmp tmpfs size=100m,mode=1777 0 0 設讓 RAM 掛 100Mb 在 /tmp
方法5:(我目前都用此方法)
直接設定 vim /etc/fstab 寫入下面那行
tmpfs /tmp tmpfs size=100m,mode=1777 0 0
# 設讓 RAM 掛 100Mb 在 /tmp
其它方法: 可參見下面連結, "有趣的 tmpfs" 中, 有提供很多更好用的方法
參考文件:
讓 /tmp 使用 tmpfs
有趣的 tmpfs(可參考阿信的寫法, 開機自動mount)
巧用tmpfs加速你的linux服務器
在Linux下使用RamDisk
拿 RAM 當硬碟來用(RAM Disk)
臨時想要做個 RAM Disk, 就去翻以前寫的文章, 發現以前的 Blog 寫的真的是很亂, 還是重新整理一下好了.
目前的作法如下:
首先在/dev/shm建個tmp文件夾,然後與實際/tmp綁定
mkdir /dev/shm/tmp
chmod 1777 /dev/shm/tmp
mount --bind /dev/shm/tmp /tmp
方法2:
mkdir /mnt/ramfs
vi /etc/fstab
none /mnt/ramfs tmpfs defaults 0 0
mount /mnt/ramfs
這樣就可以用這個 ramfs 來放一些有的沒有的, 可 man mount, man fstab
方法3:
mount -t tmpfs -o size=200m none /mnt/tmpfs
200m 是 200Mb 的意思, 詳情請看 man mount 裡的 tmpfs
方法4:
設定 /etc/default/tmpfs default shm 大小(系統會自動用此值去當硬碟)
設定 /etc/fstab: tmpfs /tmp tmpfs size=100m,mode=1777 0 0 設讓 RAM 掛 100Mb 在 /tmp
方法5:(我目前都用此方法)
直接設定 vim /etc/fstab 寫入下面那行
tmpfs /tmp tmpfs size=100m,mode=1777 0 0
# 設讓 RAM 掛 100Mb 在 /tmp
其它方法: 可參見下面連結, "有趣的 tmpfs" 中, 有提供很多更好用的方法
參考文件:
讓 /tmp 使用 tmpfs
有趣的 tmpfs(可參考阿信的寫法, 開機自動mount)
巧用tmpfs加速你的linux服務器
在Linux下使用RamDisk
2009年6月17日 星期三
kernel memory detect
arm linux中一般在cmdline或传递tag参数中设置, 个别板子在machine_desc.fixup函数中设置. 按顺序分别说明:
1, 出现顺序(内核版本2.6.25.20,下同)
start_kernel()
->setup_arch()
->mdesc->fixup()
->parse_tags()
->parse_tag_mem32()
->parse_cmdline()
->early_mem()
2, fixup()函数
这个函数arm平台用的很少. 我只找到eseries.c, mach-smdk2413.c, mach-vstms.c这几个arm板子有, smdk2413_fixup()是在bootloader传递tag地址与machine_desc预设tag地址(mem_PA+0x100)不同时设置memory的start和size. 如果fixup起作用, 会从tag中把mem tag改为ATAG_NONE, 后面的"parse_tag_mem32"就没用了.
3, parse_tag_mem32()
该函数定义在"arch\arm\kernel\setup.c". 把bootloader传入的mem tag(ATAG_MEM)的start和size参数通过"arm_add_memory()"加入到meminfo的最后一个bank中. start是memory物理起始地址.
4, early_mem()
该函数定义在"arch\arm\kernel\setup.c". 处理cmdline中的"mem=size@start".
如果没有定义mem起始地址, 使用PHYS_OFFSET(arm中应由arm开发板设置)作为start. early_mem()会覆盖前面设置的meminfo.
呵呵, 你为什么会想到找这个? 我当初是板级移植u-boot到s3c2410时分析的代码, 当时还不知道sourceinsight, 用grep查找的:(
"arch\arm\mm\init.c"文件和这个好像没关系, 里面的"bootmem_init()"会根据这里设置的meminfo计算出high_memory. 系统物理memory会1:1映射到"PAGE_OFFSET---high_memory-1".
1, 出现顺序(内核版本2.6.25.20,下同)
start_kernel()
->setup_arch()
->mdesc->fixup()
->parse_tags()
->parse_tag_mem32()
->parse_cmdline()
->early_mem()
2, fixup()函数
这个函数arm平台用的很少. 我只找到eseries.c, mach-smdk2413.c, mach-vstms.c这几个arm板子有, smdk2413_fixup()是在bootloader传递tag地址与machine_desc预设tag地址(mem_PA+0x100)不同时设置memory的start和size. 如果fixup起作用, 会从tag中把mem tag改为ATAG_NONE, 后面的"parse_tag_mem32"就没用了.
3, parse_tag_mem32()
该函数定义在"arch\arm\kernel\setup.c". 把bootloader传入的mem tag(ATAG_MEM)的start和size参数通过"arm_add_memory()"加入到meminfo的最后一个bank中. start是memory物理起始地址.
4, early_mem()
该函数定义在"arch\arm\kernel\setup.c". 处理cmdline中的"mem=size@start".
如果没有定义mem起始地址, 使用PHYS_OFFSET(arm中应由arm开发板设置)作为start. early_mem()会覆盖前面设置的meminfo.
呵呵, 你为什么会想到找这个? 我当初是板级移植u-boot到s3c2410时分析的代码, 当时还不知道sourceinsight, 用grep查找的:(
"arch\arm\mm\init.c"文件和这个好像没关系, 里面的"bootmem_init()"会根据这里设置的meminfo计算出high_memory. 系统物理memory会1:1映射到"PAGE_OFFSET---high_memory-1".
2009年6月16日 星期二
[Linux Notes] - diff 、patch 使用方法
在Linux的编程过程中,经常会使用到补丁包Patch。实际上Patch就是diff的集合。
Diff 的使用 - 生成 Patch集合
diff -uNr old_dir new_dir > diff.patch
Patch 的使用 - 应用Patch集合
cd old_dir
patch -p1 < diff.patch
(忽略diff文件里的第一层目录信息,直接从第2层开始对文件打Patch)
patch -p1 -R < diff.patch
(反向打Patch,将new_dir变成old_dir)
Diff 输出文件格式解析
一个diff文件由补丁头和补丁差异的部分组成。
补丁头的表达如下:
补丁头是分别由—/+++开头的两行,用来表示要打补丁的文件。—开头表示旧文件,+++开头表示新文件。一个补丁文件中可能包含以—/+++开头的很多节,每一节用来打一个补丁。所以在一个补丁文件中可以包含好多个补丁。
diff -u 产生的patch 文件说明
— old.txt 标记源文件,说明old.txt是需要更改的文件
+++ new.txt 标记新文件,说明new.txt是新建立的文件
@@-1,5 +2,6@@ @@表示块的开始,@@表示块的结束
表示源文件的第1行以下的5行内容与目标文件的第2行以下的6行内容有不同。
-aasa
+asas 表示删除源文件中aasa的内容,修改为目标文件中asas的内容。
Diff 和Patch 命令使用小结
单个文件
diff –uN from-file to-file >to-file.patch
patch –p0 < to-file.patch
patch –RE –p0 < to-file.patch
多个文件
diff –uNr from-docu to-docu >to-docu.patch
patch –p1 < to-docu.patch
patch –R –p1
在Linux的编程过程中,经常会使用到补丁包Patch。实际上Patch就是diff的集合。
Diff 的使用 - 生成 Patch集合
diff -uNr old_dir new_dir > diff.patch
Patch 的使用 - 应用Patch集合
cd old_dir
patch -p1 < diff.patch
(忽略diff文件里的第一层目录信息,直接从第2层开始对文件打Patch)
patch -p1 -R < diff.patch
(反向打Patch,将new_dir变成old_dir)
Diff 输出文件格式解析
一个diff文件由补丁头和补丁差异的部分组成。
补丁头的表达如下:
补丁头是分别由—/+++开头的两行,用来表示要打补丁的文件。—开头表示旧文件,+++开头表示新文件。一个补丁文件中可能包含以—/+++开头的很多节,每一节用来打一个补丁。所以在一个补丁文件中可以包含好多个补丁。
diff -u 产生的patch 文件说明
— old.txt 标记源文件,说明old.txt是需要更改的文件
+++ new.txt 标记新文件,说明new.txt是新建立的文件
@@-1,5 +2,6@@ @@表示块的开始,@@表示块的结束
表示源文件的第1行以下的5行内容与目标文件的第2行以下的6行内容有不同。
-aasa
+asas 表示删除源文件中aasa的内容,修改为目标文件中asas的内容。
Diff 和Patch 命令使用小结
单个文件
diff –uN from-file to-file >to-file.patch
patch –p0 < to-file.patch
patch –RE –p0 < to-file.patch
多个文件
diff –uNr from-docu to-docu >to-docu.patch
patch –p1 < to-docu.patch
patch –R –p1
2009年6月9日 星期二
2009年5月25日 星期一
Android: Wifi driver integration
I started looking into Wifi driver integration into Android. Android from one and only Google..which has created a big storm in the mobile platform world. Android is basicaly combination of Linux kernel with Java stack. It has got cutstomoized and optmized libc (bionic) and java virtual machine (Dalvik).
Wifi conifiguration in Android starts from Java application and goes till driver/firmware insertion through JNI interface and wifi native component. Before starting modification for these components, I wanted to verify whether Wifi driver for my target will work under Android or not.
wpa_supplicant component was not enabled by default in android 1.0 release. So to enable
Add HAVE_CUSTOM_WIFI_DRIVER_2 := true to build/target/board/generic/BoardConfig.mk file.
2. make sure external/wpa_supplicant/.config has got below entries
CONFIG_WIRELESS_EXTENSION=y
CONFIG_CTRL_IFACE=y
CONFIG_DRIVER_WEXT=y
3. Build android with this to get support for WEXT and wpa_supplicant client.
4. After the system boot, insert driver and know the interface (in my case it is eth1)
5. Modify wpa_supplicant.conf file for AP configuration and Run
/system/bin/wpa_supplicant -Dwext -ieth1 -c/sdcard/wpa_supplicant.conf
6. Run dhcp to get the IP/system/bin/dhcpcd -d eth1
7. Ping to AP to check connectivity.
To automate these steps, put above commands for wpa_supplicant and dhcpcd in init.rc.
POSTED BY VINAY H AT 3:02 AM
Wifi conifiguration in Android starts from Java application and goes till driver/firmware insertion through JNI interface and wifi native component. Before starting modification for these components, I wanted to verify whether Wifi driver for my target will work under Android or not.
wpa_supplicant component was not enabled by default in android 1.0 release. So to enable
Add HAVE_CUSTOM_WIFI_DRIVER_2 := true to build/target/board/generic/BoardConfig.mk file.
2. make sure external/wpa_supplicant/.config has got below entries
CONFIG_WIRELESS_EXTENSION=y
CONFIG_CTRL_IFACE=y
CONFIG_DRIVER_WEXT=y
3. Build android with this to get support for WEXT and wpa_supplicant client.
4. After the system boot, insert driver and know the interface (in my case it is eth1)
5. Modify wpa_supplicant.conf file for AP configuration and Run
/system/bin/wpa_supplicant -Dwext -ieth1 -c/sdcard/wpa_supplicant.conf
6. Run dhcp to get the IP/system/bin/dhcpcd -d eth1
7. Ping to AP to check connectivity.
To automate these steps, put above commands for wpa_supplicant and dhcpcd in init.rc.
POSTED BY VINAY H AT 3:02 AM
訂閱:
文章 (Atom)