ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上

2015年4月24日 星期五

mdnsresponder, android 2.3.7

build error:
target thumb C: mdnsd <= external/mdnsresponder/mDNSPosix/mDNSUNP.c
external/mdnsresponder/mDNSPosix/mDNSUNP.c: In function 'recvfrom_flags':
external/mdnsresponder/mDNSPosix/mDNSUNP.c:649: error: dereferencing pointer to incomplete type
external/mdnsresponder/mDNSPosix/mDNSUNP.c:653: error: dereferencing pointer to incomplete type
line:649 是
            sin6->sin6_addr     = ip6_info->ipi6_addr;
lin: 653 是
            pktp->ipi_ifindex   = ip6_info->ipi6_ifindex;
所以猜是 ip6_info 沒宣告。
查一下:
            struct in6_pktinfo *ip6_info = (struct in6_pktinfo*)CMSG_DATA(cmptr);
找一下有沒有struct in6_pktinfo:
  • bionic : 沒有
  • kernel : include/linux/ipv6.h
  • jelly bead bionic : libc/kernel/common/linux/ipv6.h
所以是 2.3.7 的 bionic 沒有放進來。
所以,直接把 jelly bean 的 ipv6.h copy 過來。
然後找 jelly-bean 的 header 哪裡有 include ipv6.h
libc/include/netinet/in.h
所以照著修改 ...

rebuild mdnsresponder...OK

2015年4月22日 星期三

bionic 的 libc/kernel/common/linux/in6.h 有一句:
 ***   This header was automatically generated from a Linux kernel header
 ***   of the same name, to make information necessary for userspace to
 ***   call into the kernel available to libc.  It contains only constants,
 ***   structures, and macros generated from the original header, and thus,
 ***   contains no copyrightable information.
 ***
 ***   To edit the content of this header, modify the corresponding
 ***   source file (e.g. under external/kernel-headers/original/) then
 ***   run bionic/libc/kernel/tools/update_all.py

2015年4月20日 星期一

cdc_ncm

ncm 好像是比ether 更進步(包含多 protocl) 的 usb network driver

就是兩台裝置,usb host 和 device 都要上 ncm driver
當然 host 要上 ncm host, device 要上 gadget 的 ncm

啟動之後,host 和 device 接起來,
兩台機器用 ifconfig 看,就會出現 usb0 這個 network interface.
有些 embedded device 要自己加上 interface name:
 busybox ifconfig usb0
usb0 Link ecap:Ethernet HWaddr 4E:47:ED:BF:DD:DD
     BROADCAST MULTICAST MTU:1500 Metric:1
     RX packet:0 error:0 dropped:0 overruns:0 frame:0
     TX packet:0 error:0 dropped:0 overruns:0 carrier:0
     collisions:0 txqueuelen:1000
     RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
然後兩端 (HOST, Device) 要手動設 ip 和 route..
ifconfig usb0 192.160.200.1
route add 192.168.200.2 dev usb0
ifconfig usb0 192.168.200.2
route add 192.168.200.1 dev usb0
這樣就互通了。

kernel doc 也有說明:https://www.kernel.org/doc/Documentation/usb/gadget-testing.txt

2015年4月17日 星期五

AndroidKernel.mk

好像從4.0 開始,android kernel 有 AndroidKernel.mk.
是一些 有關 kernel 的 make rule,像 kernel images and module:
$(TARGET_PREBUILT_INT_KERNEL): $(KERNEL_OUT) $(KERNEL_CONFIG) $(KERNEL_HEADERS_INSTALL)
        $(MAKE) -C kernel O=../$(KERNEL_OUT) ARCH=arm CROSS_COMPILE=arm-eabi-
        $(MAKE) -C kernel O=../$(KERNEL_OUT) ARCH=arm CROSS_COMPILE=arm-eabi- modules
        $(MAKE) -C kernel O=../$(KERNEL_OUT) INSTALL_MOD_PATH=../../$(KERNEL_MODULES_INSTALL) INSTALL_MOD_STRIP=1 ARCH=arm CROSS_COMPILE=arm-eabi- modules_install
        $(mv-modules)
        $(clean-module-folder)
        $(append-dtb)

還有 menuconfig:
kernelconfig: $(KERNEL_OUT) $(KERNEL_CONFIG)
        env KCONFIG_NOTIMESTAMP=true \
             $(MAKE) -C kernel O=../$(KERNEL_OUT) ARCH=arm CROSS_COMPILE=arm-eabi- menuconfig
        env KCONFIG_NOTIMESTAMP=true \
             $(MAKE) -C kernel O=../$(KERNEL_OUT) ARCH=arm CROSS_COMPILE=arm-eabi- savedefconfig
        cp $(KERNEL_OUT)/defconfig kernel/arch/arm/configs/$(KERNEL_DEFCONFIG)
所以要做 menuconfig。
就用 kernelconfig 就可以。


AndroidKernel.mk 是由 android device folder 下 target chip 相關目錄的 AndroidBoard.mk include 的。
所以要先 . build/envsetup && lunch 後才有辦法做 make target.

2015年4月8日 星期三

flashall.sh:
fastboot flash boot boot.img

標籤

網誌存檔