ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上

2015年6月29日 星期一

nc : netcat 多功能 , 這次用來傳檔

ref: http://nakkaya.com/2009/04/15/using-netcat-for-file-transfers/

測試 usb ncm, 所以 adb 就不能用了,
host pc 和 android 用 ncm 連起來。

這時後要傳檔,android 上又沒有 ftp, ssh server.
就用最簡單的netcat.
Usage: nc [-iN] [-wN] [-l] [-p PORT] [-f FILE|IPADDR PORT] [-e PROG]

Open a pipe to IP:PORT or FILE

    -l      Listen mode
    -p PORT local port
    -w SEC  connect timeout
    -i SEC  delay interval for lines sent
    -f FILE use file (ala /dev/ttyS0) instead of network
    -e PROG Run PROG after connect

送和收都用 nc

先啟動收..
# nc -l -p 1234 > /system/bin/mytool

然後送的...
$ nc -w 3 192.168.200.2 1234 < ./mytool

2015年6月26日 星期五

UART 的開機訊息..
HELLO! BOOT0 is starting!
boot0 version : 3.0.0
dram size =1024
card boot number = 0
card no is 0
sdcard 0 line count 0
[mmc]: SD/MMC Card: 4bit, capacity: 15073MB
[mmc]: vendor: Man 0x001d4144 Snr 0xb247064d
[mmc]: product: SD
[mmc]: revision: 0.2
sdcard 0 init ok
The size of uboot is 0x000a4000.
sum=0x13f50087
src_sum=0x13f50087
Succeed in loading uboot from sdmmc flash.
Ready to disable icache.
Jump to secend Boot.
[      0.169]

U-Boot 2011.09-rc1-00003-ge89ab14-dirty (Jan 03 2014 - 12:57:33) Allwinner Technology

好像是..
cpu load boot0.
boot0 init sdmmc, 然後 load boot1

boot1 再把 u-boot load 進來。

這 code 好像是在..
lichee/boot
下面剛好有..boot0. boot1, config..這些folder.

--

2015年6月22日 星期一

Banana Pi, android image test

ref: http://www.botsheet.com/cht/banana-pi-install-android-4-2/
是 4.2 版。

主要是使用 PhinexCard 燒錄工具有點不直覺。
而且要分城幾部份..

write Mode 選 Startup.
然後 Format to Norma.
再 Burn

開機,接 HDMI 就可以,但是..接在 monitor 上,monitor 顯示 Signal Out of Range.
所以只好接在 1080P 的 display 上。

開機,接在 CON上的 tty pin會顯示 boot log..到 ..
還是沒有出現 shell prompt..

Wifi 使用上次 raspberry pi 做 miracast 的 dongle 就可以正常動作。
adb 也可以正常動作。

2015年6月17日 星期三

Banana Pi.

google 了一下,好像是這樣:

台灣人'想要' 學 raspberry pi 做一個 open hardware.
可能應繼架構和名稱都設計好了,然後請 大陸人代工。
硬體找人代工,軟體也是,找了另一個大陸公司代工。

因為軟體是找人代工的,support 也就一樣是那個人負責囉。
然後...

東西好像熱起來,台灣人有點高興。
大陸人可能覺得support 做這麼久,community. 也是我搞起來的。
所以就去註冊了 banana pi 商標。

這下台灣人不開心,可能有威脅說要怎樣怎樣,
但是, 裁判,球證都是我的人,你能拿我怎樣!
阿,不對, hardware, software 都是我做的,你有什麼?

所以鬧了一陣子,大陸人也改了名字。
台灣這邊才警覺到,自己要 mantain software 和 community, 所以開始設forum, github...


所以..
有關 bananpi 的 資源很亂。

有allwiner 原廠的,
有 lemaker 的,
也有 bananapi org 的。

2015年6月12日 星期五

A20 android build from source

其實就是 build_android.sh 這個 script.

一樣...
. build/envsetup.sh
lunch  # 選 sugar-bpi 或是 sugar-lemark
然後多一個步驟:
extract-bsp

最後才 make

make 完做 pack

這個特殊command, ref: http://www.cnblogs.com/JonnyLulu/p/3572080.html
是在 android/device/sofrwinner/common/vendorsetup.sh

裡面還有一堆 command.


因為在 envsetup 時..
including device/asus/grouper/vendorsetup.sh
including device/asus/tilapia/vendorsetup.sh
including device/generic/armv7-a-neon/vendorsetup.sh
including device/generic/armv7-a/vendorsetup.sh
including device/generic/mips/vendorsetup.sh
including device/generic/x86/vendorsetup.sh
including device/samsung/maguro/vendorsetup.sh
including device/samsung/manta/vendorsetup.sh
including device/samsung/toroplus/vendorsetup.sh
including device/samsung/toro/vendorsetup.sh
including device/softwinner/common/vendorsetup.sh
including device/softwinner/sugar-bpi/vendorsetup.sh
including device/softwinner/sugar-evb/vendorsetup.sh
including device/softwinner/sugar-lemaker/vendorsetup.sh
including device/softwinner/sugar-ref001/vendorsetup.sh
including device/softwinner/sugar-standard/vendorsetup.sh
including device/softwinner/wing-evb-v10/vendorsetup.sh
including device/ti/panda/vendorsetup.sh
including sdk/bash_completion/adb.bash
所以vendorsetup.sh 會被包含進入。
所以可以寫自己的擴充 command 到 vendorsetup.sh 中。

2015年6月9日 星期二

shflags -- another way to getopt in shell script

這原來\是google code.
用簡單的定義 DEFINE_xxx 方式來方便 shell script 做 argument 設定,取得
使用時,只要在 script 前
. ./shflags
之後就可以用 shflags 裡面所有的 function 變數。

原網站有說明和 example.

這裡就大概寫一些。以望站上的 example來看。
#!/bin/sh

. /path/to/shflags

#define option variable: var_name, default_value, var_comment, var_option_flag
DEFINE_string 'name' 'world' 'name to say hello' 'n'

#processing the arguments
FLAGS "$@" || exit $?
eval set -- "{$FLAGS_ARGV}"

# say hello
echo "Hello, ${FLAGS_name}" !

就像 comment 說的 一樣。
使用和輸出結果是..
./hello_world.sh -n charles
Hello charles !

A20 , kernel (android?) build from source

先看 build_kernel.sh:

default config 是 bpi_defconfig 或 sun7i_bpi_android_defconfig
內容很無聊,就 make clean,然後到 lichee 下 run build.sh

lichee/build.sh:

buidroot/scripts/mkcommon.sh $@

所以 mkcommon.sh:

好像是真正的 master build script

整理一下:

scripts/build_kernel.sh
lichee/build.sh -p sun7i_android
lichee/buildroot/scripts/mkcommon.sh $@

所以其實只有到 lichee 下, run buildroot/scripts/mkcommon.sh -p sun7i_android

用了一個 google code: shflags.
這是用來使用 argument 的。

以下面這行為例:
DEFINE_string 'platform' 'sun7i' 'platform to build, e.g. sun7i' 'p'
意思是:argument 中有 -n 選項,是 platform 變數,default value 是 sun7i, 說明是 "platform to build, e.g. sun7i

所有的 build script 選項:
DEFINE_string 'platform' 'sun7i' 'platform to build, e.g. sun7i' 'p'
DEFINE_string 'kernel' '3.4' 'kernel to build, e.g. 3.3' 'k'
DEFINE_string 'board' '' 'board to build, e.g. evb' 'b'
DEFINE_string 'module' '' 'module to build, e.g. buildroot, kernel, uboot, clean' 'm'
DEFINE_boolean 'independent' false 'output build to independent directory' 'i'

回到 script, 只有一個 option: '-p sun7i_android'
所以:
FLAGS_platform = sun7i_android
FLAGS_kernel = 3.4 
FLAGS_board = 
FLAGS_module =
FLAGS_independent = false 

接著看..
然後利用字串處理符號 (ref: http://tldp.org/LDP/abs/html/string-manipulation.html ) :

chip=${FLAGS_platform%%_*}       切掉 _以後的部份
platform=${FLAGS_platform##*_}   取出 _之前的部份
kernel=${FLAGS_kernel}
board=${FLAGS_board}
module=${FLAGS_module}
所以..
chip = sun7i
platform = android
kernel = 3.4
board =
module -

所以是 run :
init_outdir
mklichee

build kernel..
結果出現 error:
make: Entering directory `/home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4/modules/mali'
/home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4
make -C DX910-SW-99002-r3p2-01rel2/driver/src/devicedrv/ump CONFIG=ca8-virtex820-m400-1 BUILD=release KDIR=/home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4
make[1]: Entering directory `/home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4/modules/mali/DX910-SW-99002-r3p2-01rel2/driver/src/devicedrv/ump'
make -C /home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4 M=/home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4/modules/mali/DX910-SW-99002-r3p2-01rel2/driver/src/devicedrv/ump modules
make[2]: Entering directory `/home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4'
  CC [M]  /home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4/modules/mali/DX910-SW-99002-r3p2-01rel2/driver/src/devicedrv/ump/common/ump_kernel_common.o
arm-linux-gnueabi-gcc: error: directory: No such file or directory
arm-linux-gnueabi-gcc: error: directory": No such file or directory
make[3]: *** [/home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4/modules/mali/DX910-SW-99002-r3p2-01rel2/driver/src/devicedrv/ump/common/ump_kernel_common.o] Error 1
make[2]: *** [_module_/home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4/modules/mali/DX910-SW-99002-r3p2-01rel2/driver/src/devicedrv/ump] Error 2
make[2]: Leaving directory `/home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4/modules/mali/DX910-SW-99002-r3p2-01rel2/driver/src/devicedrv/ump'
make: *** [build] Error 2
make: Leaving directory `/home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4/modules/mali'

因為 kernel build 減少了 message 輸出,所以不知道那裡出問題。
先把 message 打開...
ref: https://www.kernel.org/doc/readme/README
- Verbose kernel compile/build output:

   Normally, the kernel build system runs in a fairly quiet mode (but not
   totally silent).  However, sometimes you or other kernel developers need
   to see compile, link, or other commands exactly as they are executed.
   For this, use "verbose" build mode.  This is done by inserting
   "V=1" in the "make" command.  E.g.:

     make V=1 all

   To have the build system also tell the reason for the rebuild of each
   target, use "V=2".  The default is "V=0".

就是去把 compile 加上 option "V=1".

這個build module 的script 是...
 lichee/linux-3.4/scripts/build_sun7i_android.sh 
所以在 mali 加上 V=1

diff --git a/lichee/linux-3.4/scripts/build_sun7i_android.sh b/lichee/linux-3.4/scripts/build_sun7i_android.sh
index 1c0eae2..45beab3 100755
--- a/lichee/linux-3.4/scripts/build_sun7i_android.sh
+++ b/lichee/linux-3.4/scripts/build_sun7i_android.sh
@@ -135,7 +135,7 @@ build_modules()
     (
     export LANG=en_US.UTF-8
     unset LANGUAGE
-    make -C modules/mali LICHEE_MOD_DIR=${LICHEE_MOD_DIR} LICHEE_KDIR=${LICHEE_KDIR} \
+    make -C modules/mali LICHEE_MOD_DIR=${LICHEE_MOD_DIR} LICHEE_KDIR=${LICHEE_KDIR} V=1 \
         install
     )
 
build 的結果是..
make: Entering directory `/home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4/modules/mali'
/home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4
make -C DX910-SW-99002-r3p2-01rel2/driver/src/devicedrv/ump CONFIG=ca8-virtex820-m400-1 BUILD=release KDIR=/home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4
make[1]: Entering directory `/home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4/modules/mali/DX910-SW-99002-r3p2-01rel2/driver/src/devicedrv/ump'
make -C /home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4 M=/home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4/modules/mali/DX910-SW-99002-r3p2-01rel2/driver/src/devicedrv/ump modules
make[2]: Entering directory `/home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4'
test -e include/generated/autoconf.h -a -e include/config/auto.conf || (  \
 echo;        \
 echo "  ERROR: Kernel configuration is invalid.";  \
 echo "         include/generated/autoconf.h or include/config/auto.conf are missing.";\
 echo "         Run 'make oldconfig && make prepare' on kernel src to fix it."; \
 echo;        \
 /bin/false)
mkdir -p /home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4/modules/mali/DX910-SW-99002-r3p2-01rel2/driver/src/devicedrv/ump/.tmp_versions ; 
rm -f /home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4/modules/mali/DX910-SW-99002-r3p2-01rel2/driver/src/devicedrv/ump/.tmp_versions/*
make -f scripts/Makefile.build obj=/home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4/modules/mali/DX910-SW-99002-r3p2-01rel2/driver/src/devicedrv/ump
  arm-linux-gnueabi-gcc -Wp,-MD,
  /home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4/modules/mali/DX910-SW-99002-r3p2-01rel2/driver/src/devicedrv/ump/common/.ump_kernel_common.o.d  
  -nostdinc -isystem /home/charles-chang/sd/BPiA4.2.2/lichee/out/android/common/buildroot/external-toolchain/bin/../lib/gcc/arm-linux-gnueabi/4.6.3/include
  -I/home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4/arch/arm/include
  -Iarch/arm/include/generated -Iinclude  
  -include /home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4/include/linux/kconfig.h 
  -D__KERNEL__ -mlittle-endian -Iarch/arm/mach-sun7i/include -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing 
  -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -Os -marm -fno-dwarf2-cfi-asm 
  -fno-omit-frame-pointer -mapcs -mno-sched-prolog -mabi=aapcs-linux -mno-thumb-interwork -D__LINUX_ARM_ARCH__=7 -march=armv7-a 
  -msoft-float -Uarm -Wframe-larger-than=1024 -fno-stack-protector -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls 
  -g -femit-struct-debug-baseonly -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack 
  -DSVN_REV=Unversioned directory -DSVN_REV_STRING=\"Unversioned directory\" 
  -I/home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4/modules/mali/DX910-SW-99002-r3p2-01rel2/driver/src/devicedrv/ump
  -I/home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4/modules/mali/DX910-SW-99002-r3p2-01rel2/driver/src/devicedrv/ump/common
  -I/home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4/modules/mali/DX910-SW-99002-r3p2-01rel2/driver/src/devicedrv/ump/linux 
  -I/home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4/modules/mali/DX910-SW-99002-r3p2-01rel2/driver/src/devicedrv/ump/../mali/common
  -I/home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4/modules/mali/DX910-SW-99002-r3p2-01rel2/driver/src/devicedrv/ump/../mali/linux
  -I/home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4/modules/mali/DX910-SW-99002-r3p2-01rel2/driver/src/devicedrv/ump/../../ump/include/ump
  -DMALI_STATE_TRACKING=0 -I/home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4/modules/mali/DX910-SW-99002-r3p2-01rel2/driver/src/devicedrv/ump/linux/license/gpl
  -DMODULE  -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(ump_kernel_common)"  -D"KBUILD_MODNAME=KBUILD_STR(ump)" -c
  -o /home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4/modules/mali/DX910-SW-99002-r3p2-01rel2/driver/src/devicedrv/ump/common/.tmp_ump_kernel_common.o
  /home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4/modules/mali/DX910-SW-99002-r3p2-01rel2/driver/src/devicedrv/ump/common/ump_kernel_common.c

arm-linux-gnueabi-gcc: error: directory: No such file or directory
arm-linux-gnueabi-gcc: error: directory": No such file or directory
make[3]: *** [/home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4/modules/mali/DX910-SW-99002-r3p2-01rel2/driver/src/devicedrv/ump/common/ump_kernel_common.o] Error 1
make[2]: *** [_module_/home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4/modules/mali/DX910-SW-99002-r3p2-01rel2/driver/src/devicedrv/ump] Error 2
make[2]: Leaving directory `/home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4/modules/mali/DX910-SW-99002-r3p2-01rel2/driver/src/devicedrv/ump'
make: *** [build] Error 2
make: Leaving directory `/home/charles-chang/sd/BPiA4.2.2/lichee/linux-3.4/modules/mali'

所以問題就出在..
-DSVN_REV=Unversioned directory 
其中 Unversioned directory 沒有用 " " 刮起來,directory 被認為是 compile object...

ref: https://github.com/Pivosgroup/buildroot-linux-kernel/commit/1524a2dc8bfbee683384996f434a2a991416c1df
這裡有一樣的問題。
說明這個 SVN_REV 是用 svnversion 輸出的 svn 版本。
如果這個 folder 不是 svn control, svnversion 就會顯示 exported.
SVN_REV := $(shell ((svnversion | grep -qv exported && echo -n 'Revision: ' && svnversion) || git svn info | sed -e 's/$$$$/M/' | grep '^Revision: ' || echo ${MALI_RELEASE_NAME}) 2>/dev/null | sed -e 's/^Revision: //')
其中的..
svnversion | grep -qv exported 
其中的 grep -qv exported 就是剔除 包含 "exported" 的 pattern.
本意是剔除沒有 svn control 的 folder, 因為svnversion 會顯示 "exported".

但是 svn 在1.7 版以後,改為顯示 "Unversioned directory".
所以上面的 rule 就 fail.
要改成:
svnversion | grep -Eqv "exported|Unversioned directory"
同時剔除 exported 和 Unversioned directory 才行。

2015年6月8日 星期一

Chromebook

chrome book..
開始服役。

因為是特價,所以鍵盤沒有注音。
也還好。

有關 touchpad:
  • 三指滑動可以切換分頁
  • 三指往下滑動可以開啟多視窗切換
  • 雙擊後可以輕觸拖曳視窗(要先手動到 Chrome OS 設定中調整)
  • 雙指拖曳可以捲動頁面
  • 雙指輕點是滑鼠右鍵
有關 keyboard:
  • alt+down : next page/ page down
  • alt+up : prev page/ page up

標籤

網誌存檔