2016/7/28

multi window / app in Android

ref: https://github.com/darkenk/OkienkaTest
這一個人寫了一個 launcher app. 可以開啟多個 app, 變成 multi window

但是在 Android N 以後,好像就native support multi window 了:
https://developer.android.com/preview/features/multi-window.html?hl=zh-tw

然後 XDA 說,android 6 的 userdebug build, 開啟 developer mode, 就會多一個 multi window mode 的選項。
http://forum.xda-developers.com/android/general/guide-enable-multi-window-mode-android-t3121483

2016/7/26

vi : set tab to 4 spaces and replace all

很麻煩,有些source code tab 用 4 個 space.
而不是 tab

所以...ref http://vim.wikia.com/wiki/Converting_tabs_to_spaces

:set tabstop=4 shiftwidth=4 expandtab
一行做完。

如果要 vi 修改整個 source...
再下..
:set retab


2016/7/25

tinycap : support capture to stdout

https://github.com/tinyalsa/tinyalsa/pull/31/commits/5741cc04a4b20fd0997c8de6808c3a2557291d0d
這個人把 tinycap 加上從 stdout 輸出的功能。

大概就是,, stdout 時..
  • 不需要做 file header
  • 不能 print message

所以,增加了兩個 flag:
  • no_header : 不要做 file header
  • prinfo : print message

2016/7/21

thread--event--
  if (connect_change)
        hub_port_connect_change( );

hub_port_connect_change--hub_port_init

2016/7/18

static inline int hub_is_superspeed(struct usb_device *hdev)
{
        return (hdev->descriptor.bDeviceProtocol == USB_HUB_PR_SS);
}

ch11.h:
/*
 * Hub Device descriptor
 * USB Hub class device protocols
 */

#define USB_HUB_PR_FS           0 /* Full speed hub */
#define USB_HUB_PR_HS_NO_TT     0 /* Hi-speed hub without TT */
#define USB_HUB_PR_HS_SINGLE_TT 1 /* Hi-speed hub with single TT */
#define USB_HUB_PR_HS_MULTI_TT  2 /* Hi-speed hub with multiple TT */
#define USB_HUB_PR_SS           3 /* Super speed hub */


ch9.h:
hubdev->state
enum usb_device_state {
        /* NOTATTACHED isn't in the USB spec, and this state acts
         * the same as ATTACHED ... but it's clearer this way.
         */
        USB_STATE_NOTATTACHED = 0,

        /* chapter 9 and authentication (wireless) device states */
        USB_STATE_ATTACHED,
        USB_STATE_POWERED,                      /* wired */
        USB_STATE_RECONNECTING,                 /* auth */
        USB_STATE_UNAUTHENTICATED,              /* auth */
        USB_STATE_DEFAULT,                      /* limited function */
        USB_STATE_ADDRESS,
        USB_STATE_CONFIGURED,                   /* most functions */

        USB_STATE_SUSPENDED

        /* NOTE:  there are actually four different SUSPENDED
         * states, returning to POWERED, DEFAULT, ADDRESS, or
         * CONFIGURED respectively when SOF tokens flow again.
         * At this level there's no difference between L1 and L2
         * suspend states.  (L2 being original USB 1.1 suspend.)
         */
};


2016/7/11

buildroot 好像持續開發中,所以command 有變化,google 到的 command 跟文章的時間有關。

只要rebuild 一個 package 的話,就用:
$ make <pkg>-rebuild


至於有哪些package name 可以用...我到現在還沒找到...
https://www.quora.com/How-can-I-trigger-the-rebuild-of-Linux-kernel-in-Buildroot

linux kernel 的話好像是 ...
make linux-rebuild

2016/7/6

buildroot for iMX6

ref:
就先 clone buildroot 下來...
.. 姊果 clone 不下來,所以只好download tar 下來解。

用.. 2015.05 的版本。
解開後,用 imx6 sabreauto 的config:
find 一下 freescale_*_defconfig
$ make freescale_imx6dlsabreauto_defconfig
$ make


make 之前可以用 make menuconfig 看一下配置。kernel , uboot 版本之類。
make 後,就會去 download source, patch..
因為有過 proxy, 所以有些 git:// target 會 fetch failed.
這時候中斷,接上 no proxy 的 network, 再繼續 make
然後fetch tar ball 又要過 proxy,, 又接上 ethernet...
反覆..終於 build OK

build 好在: out/images

然後就 follow reference.
這個SD partition 配置是:
  • boot region : iMX 從 1024 開始 load bin, 這區域要放 uboot
  • vfat partition : 第一個 partition, 要是 fat, 裡面是 uImage 和 dtb
  • root fs : 第二個 partition, 是 EXT4, 就是 image: rootfs 的內容

燒錄的動作略有不同。
這個 buildroot build 出來的 uboot 是 u-boot.imx, 不是 bin
所以直接 dd 到 1024 的地方...
$ sudo dd if=u-boot.imx of=/dev/sdb bs=1k seek=1
這樣開機已經可以看到 uboot message... 當然,boot to kernel failed

接著 formate /dev/sdb1 為 vfat, copy uImage 和 imx6dl-sabreauto.dtb 過去。
這時候開機,已經可以看到開進 kernel,, 當然,開到一半就 kernel trap.. 因為 VFS: Unable to mount rootfs on unknown-block(179,2)

把 sdb2 format 成 ext4 後..
照著..
# mount /dev/ /mnt
# tar -C /mnt -xvf output/images/rootfs.tar
# umount /mnt
之後,一樣, Unable to mount,,
但是在 bootlog 中明明有看到..mmcblk0p2

..結果是... hardware 不一樣...
因為用 microSD, 所以沒有做 write protect detection, 所以 kernel 認為...
mmcblk0: mmc0:59b4 USD 7,51GiB (ro)
是 readonly,, 所以不能當作 root..