Announce U-Boot for Kontron SAMX6I

Posted in ARM, uboot with tags , , , , on 2016 年 07 月 07 日 by Kun-Yi

bToday I have push an u-boot for support Kontron sAMX6i  iMX6Q

The version just verify on IMX6Q with 1GB configuration for booting success original Linux system

you can following the  below instructions to build up your binary to replace default bootloader

git clone https://github.com/KunYi/uboot-samx6i
cd uboot-samx6i
# setup cross compiler environments, use Yocto toolchains
source ~/yocto/toolchain/environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi
make distclean
make samx6i_defconfig
make -j8

Okay,  you can get u-boot.imx now, I use the below method to replace original bootloader

  1. connect UART1 to host computer and run minicom for operation u-boot commands
  2. format Micro SD for FAT, the put u-boot.imx file on the micro sdcard
  3. plug the Micro SD into slot of carrier board
  4. power on system and press any key on host to interrupt booting
  5. run the below commands for upgrade bootloader
  • mmc dev 1
  • fatload mmc 1:0 0x10800000 u-boot.imx
  • sf probe
  • sf erase 0 0xc0000
  • sf write 0x10800000 0x400 $filesize
  • reset

all complete, should be reboot from new bootloader now

Note: Added private repository into manifest.xml

Posted in repo, SCM(Software Configuration Management) with tags on 2016 年 01 月 30 日 by Kun-Yi

簡單講 github/bitbucket 之流都有提供 private repository 的代管,因為目前使用Yocto Project 是透過Google 的 repo 做build environments 建制,因為包含一些自我的private repositories 在bitbucket 上。

透過 bitbucket 的解說,是採取 ssh://git@bitbucket.org/<name>/<repository>.git 的格式
記住 name 可是屬於個人的user name 也可以是 team name
可以看 bitbucket 提供的 git@bitbucket.org:<name>/<repository>.git 的格式辨認出來
我自己放到 manifest.xml 是採取下列格式

<remote name="bitbucket" fetch="ssh://git@bitbucket.org/<name> />

<project remote="bitbucket" revision="refs/master/head" name="<repository>.git" path="sources/<repository>" />

Note: To clone special branch for Git operation

Posted in git, SCM(Software Configuration Management) with tags on 2016 年 01 月 30 日 by Kun-Yi

起因是最近有個新案子在跑 用的是Yocto/OE 的Build environments 他有一個設計就是針對某的vendors 的BSP 可以將patch 透過寫script 方式在Buildtime時一個一個打上去, 也可以自己透過SCM tools 去拉特定的 revision,一般的建議是用patch 一個一個打,可是我覺的這樣很蠢呀! 尤其是kernel 明明廠商就是有git repo. 可以拉了,當然因為你沒辦法推回去 但是只要自己clone一份就好。

但是事情沒有我這個笨人想的那樣簡單,因為目前是多方合作的案子,所以由客戶方在Bitbucket 上開了一個 team group 共同協作,當我好不容易把kernel repo 搬到bitbucket 上時,竟然發現Bitbucket 出現該repo. 超過2GB 所以只能讀不能寫的訊息,按照線上說明去做了一些步驟如透過BFG去過濾大於某一個大小的檔案等方法,但是都一無所獲。不由得想到前幾天看到的一個方法

  1. git init #initialized a empty repository
  2. git remote add -t <branch> <name> <url>     # track a special branch
    or git remote add -m <brancn> <name> <url> # track a special branch to master
  3. git checkout

經過測試後該 repo 果然可以有效降為只剩下 1GB 大小 雖然 Bitbucket 還是會警告 但是最少還是可以 commit 到 2GB 的狀況, 我個人是覺的應該不會出現被我commit到出現 repository 增長到 2GB 的慘事才是

update: 剛不知道為啥 又不成功 但是在 git官網看到 doc 有寫 下面這段

Imitate git clone but track only selected branches

$ mkdir project.git
$ cd project.git
$ git init
$ git remote add -f -t master -m master origin git://example.com/git.git/
$ git merge origin

Note: learning javascript using NodeJS

Posted in Javascript with tags , on 2016 年 01 月 11 日 by Kun-Yi

最近開始想跟上時代腳步 開始練一下Javascript 配合未來趨勢,底下是我看某些教材練習的片段, person 是一個 object 宣告 可以直接用for 去列舉屬性還蠻方便做很多meta programming 而整數的sort 從小排到大 則是跟C 語言的qsort 一樣要提供一個compare function 只是這裡是沒有名稱的形式 而且傳回定義同C語言

var person = {
name : “Jules Verne",
job : “Author",
year_of_birth : 1828,
year_of_death : 1905
},
prop;

for (prop in person)
{
console.log(“His " + prop + " is " + person[prop]);
}

var arr = [5, 2, 3, 4, 1];

arr.sort(function (a, b) {
console.log (“a:" + a + “, b:" + b + “, a – b:" + (a – b));
return a – b;
});
console.log(arr);

執行結果如下

His name is Jules Verne
His job is Author
His year_of_birth is 1828
His year_of_death is 1905
a:5, b:2, a – b:3
a:5, b:3, a – b:2
a:2, b:3, a – b:-1
a:5, b:4, a – b:1
a:3, b:4, a – b:-1
a:5, b:1, a – b:4
a:4, b:1, a – b:3
a:3, b:1, a – b:2
a:2, b:1, a – b:1
[ 1, 2, 3, 4, 5 ]

Note: Test build Legato Platform of Sierra on Ubuntu 14.04

Posted in Hardware, Works, 未分類 with tags on 2015 年 12 月 29 日 by Kun-Yi

只需要在Sierra Wireless 上註冊帳號就可以下載他的 Source code
它現在採主流 Embedded Linux 的開發環境 Yocto Project,解開後很簡單只需下 make 就可以完成 喔對了網頁上會寫要裝哪些套件成功 build code

但是如果按照這樣的步驟會發現有兩個 package 會出現問題 原因是他在bb 的function 中呼叫了 bash 的內建函式 而bb是呼叫/bin/sh 在 Ubuntu 上預設的 sh 是dash 所以會不能正確執行, 需要做一個work around 當然你也可以手動砍掉symolically 在重新建立連到 bash 的link 也是可行的

 

  • Check that /bin/sh (ls -l /bin/sh) is not symbolically linked to dash. “dash" is a POSIX compliant shell that is much smaller than “bash" — however some broken shell scripts still make use of bash extensions while calling into /bin/sh. To work around this issue call “sudo dpkg-reconfigure dash" and select No when it asks you to install dash as /bin/sh.

 

Note: U-Boot update read from SD card then write into SPI Flash

Posted in ARM, uboot, 未分類 with tags , on 2015 年 11 月 30 日 by Kun-Yi

這兩天拿到一張 IMX 的 SMARC 版子,想要弄Android 但是只有Freescale 的codebase ,所以從u-boot 開始搞起。

接上 console 後,測試版上的u-boot 發現需要更新到新版本,研究一下u-boot 現在可以自我更新,嘗試了一下發現按照下面的command 順序即可

  1. mmc dev 1  # 切換mmc 到那一個slot
  2. mmcinfo   # 可以確認是否有認到sdcard
  3. fatload mmc 1 0x10800400 u-boot.bin # 讀SD card 上的u-boot.bin 到DRAM中, 讀完會有檔案大小
  4. sf probe
  5. sf erase 0 0x200000 # erase all
  6. sf write 0x10800000  0 0x58000 # 0x58000 是檔案大小 + 1024(0x400), 注意第三步已經偏移了 0x400, 這是IMX6的需求
  7. reset

Note: Freescale 3.14.28-1.0.1 release kernel & u-boot

Posted in Linux, 未分類 with tags , on 2015 年 11 月 19 日 by Kun-Yi

一開始的工作應該是改這兩個kernel & u-boot東西 還要看一下怎樣做才正確

Bitbake 的 Recipes

  • ./yocto_3.14.28-1.0.1/sources/meta-fsl-bsp-release/imx/meta-fsl-arm/recipes-bsp/u-boot/u-boot-imx_2014.04.bb
  • ./yocto_3.14.28-1.0.1/sources/meta-fsl-bsp-release/imx/meta-fsl-arm/recipes-kernel/linux/linux-imx_3.14.28.bb

透過 Recipes 會把Source code 解壓縮或是透過git clone/pull 的方式弄到下面對應的build folder 裡面去,主要看 Recipes 的寫法

  • ./yocto_3.14.28-1.01/build/tmp/work/imx6dlsabresd-poky-linux-gnueabi/u-boot-imx/2014.04-r0/git
  • ./yocto_3.14.28-1.01/build/tmp/work/imx6dlsabresd-poky-linux-gnueabi/linux-imx/3.14.28-r0/git