Note: how to apply Shell environments into bitbak/yocto project

Posted in Yocto with tags , on 2017 年 07 月 26 日 by Kun-Yi

要讓 bitbake 可以吃到 shell environments 還要下一個
export BB_ENV_EXTRAWHITE 才行
如要指定 DL_DIR

export BB_ENV_EXTRAWHITE="$BB_ENV_EXTRAWHITE DL_DIR"

這樣才能透過 .bashrc 去指定想要的 DL_DIR
這樣才不用每個人去改自己的 local.conf

如果是 team work 可以指定一台NFS servers 放 DL_DIR, SSTATE_DIR 等目錄,這樣可以有效減少能源消耗跟避免讓電腦做一些已經做過的事情

 

Note: usage repo tips

Posted in programming, repo, SCM(Software Configuration Management) on 2017 年 07 月 26 日 by Kun-Yi
repo sync –no-tags –no-clone-bundle -jN -c
 
這就只會拉你要的那個 (repo init -u URI -b branch)branch or tags
N: integer for parallel process
repo init 時加上 –reference local_path 可以把使用自己已經先 mirror repositories
這是透過git clone 的 –reference 作到的
例如 先參考 https://source.android.com/source/downloading#using-a-local-mirror
做出一個 local mirror
搭配適當的指令可以快速repo sync

Note: Antenna for NFC Controller

Posted in 通訊 with tags , on 2017 年 04 月 18 日 by Kun-Yi

NFC應用經過apple pay等應用算是深入生活中, 手上也有些案子在用, 因為某些原因感覺效果不是很好, 最近選了NXP PN7120來測試, 基本上它應該是NXP針對一般小廠商需求推出的產品, 檯面上大廠不會用這顆, 不過如果關注他的硬體與韌體會發現基本上是大同小異, 從PN547時代就導入的CortexM0去取代舊時代的8051的架構估計這個架構很久都不會在改變,可能的是微調製程參數, RF等地方而已. 所以還是可以藉由這一個系列去研究其他相關產品。

PN7120 主要提供了 AN11565 Hardware Design Guide 與AN11564 Antenna Design and Matching Guide 這兩個文件實際上除了硬體相關的設計注意事項也提到了相關的Register設定意義, 所以除了HW與RF人員外, 相關的DRIVER PORTING可能也需要一起協助處理

在AN11564中, 一開始先用一個模擬示意, 當天線在一個金屬平面上會因為在金屬上會產生逆向渦流(Eddy Currrent)進而減少磁場的強度, 這主要是因為NFC操作在13.56MHz的頻率, 能量交換主要是透過磁場達成, 而金屬會感應天線的能量,進而產生一個反向渦流去抵銷天線能量

為了避免這個渦流效應, 恢復天線本身效能可以透過貼上鐵氧體(Ferrite)去減少渦流產生,因其為磁性材料而且有高阻值使渦流減到很低的狀況。

天線的設計步驟

文件的3.1章節提的是基本的設計五步驟

  1. 找出天線的線圈特性
  2. 找出發射的EMC濾波器的截止頻率
  3. 設計針對讀取天線與EMC之間的匹配電路
  4. 調整匹配針對卡片模式
  5. 設計接收路徑參數

它這實際上是需要反覆這5個步驟的不是一開始決定天線就完全不變得
天線的Q值建議是35以下可以考慮設計在下面之間, 而且還要考慮到匹配網路
ISO14443:BW=1.921MHz,Q≈10
ISO15693:BW=0.914MHz,Q≈20

一般建議的天線效能為距離3.5 ~ 5cm 能讀取到 Mifare Ultralight/Desfire為考量, 否則使用上可能會有困擾

Note: Qt5.8 with EETI Touchcontroller

Posted in QT5 with tags , , on 2017 年 03 月 07 日 by Kun-Yi

最近在測試Boot2Qt 看起來EETI 的Touchcontroller 是必須掛 TSLIB 才能用了, 主要就是eGTouchL.ini 可以先用 GetEvent 去驗證一下 Orientation 把這個設對, 然後就可以去執行

ts_calibrate

用的是 EETI 的USB interface VID:OEEF, PID:0001

其他按照EETI 的官網文件應該是可以的

ref.

Note: Build Brillo for DragonBoard 410C steps

Posted in DragonBoard, IoT with tags , , on 2017 年 01 月 30 日 by Kun-Yi

I got dragonboard 410c a few days, want to porting Boot2Qt and try Android Things on the board.

this will describe how to make generation Brillo/Android things image for DragonBoard 410C, Need know how to build AOSP source code, because Brillo are subset of Android

  • To download all source code from google source
mkdir brillo
cd brillo
repo init -u https://android.googlesource.com/brillo/manifest -b brillo-m10-release
repo sync
  •     To get latest vendor pre-built package
mkdir -p vendor/bsp/qcom/device/dragonboard
cd vendor/bsp/qcom/device/dragonboard
wget https://developer.qualcomm.com/qfile/29963/dragonboard410c_brillo-v2.1.tar.gz
tar xvf dragonboard410c_brillo-v2.1.tar.gz --strip-components=1
cd ../../../../..
  • Setup build environments and starting build
source build/envsetup.sh
lunch dragonboard-eng
  • you will see the below message
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=6.0.1
TARGET_PRODUCT=dragonboard
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a
TARGET_CPU_VARIANT=generic
TARGET_2ND_ARCH=
TARGET_2ND_ARCH_VARIANT=
TARGET_2ND_CPU_VARIANT=
HOST_ARCH=x86_64
HOST_2ND_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-4.4.0-59-generic-x86_64-with-Ubuntu-14.04-trusty
HOST_CROSS_OS=windows
HOST_CROSS_ARCH=x86
HOST_CROSS_2ND_ARCH=x86_64
HOST_BUILD_TYPE=release
BUILD_ID=MASTER
OUT_DIR=out
============================================

 

Now you can type make -j4 or make -j8 to starting build image
finish you will get build image under out/target/product/dragonboard, check “provision-device" file for update image into device emmc

ref.

Note: Porting Boot2Qt to Customer board

Posted in Linux with tags , , , on 2017 年 01 月 16 日 by Kun-Yi

因為最近公司沒有特別指定讓我作啥 但是有些來自PM/Sales 的訊息是有Qt5 的需求, 做了一年的Yocto project 終於對Embedded Linux 算是也有大略認識, 然後自己先從NXP/Freescale i.MX6 跟 Intel Apollo lake 的Yocto BSP 玩起, 先把Qt5 在上述廠商提供的YoctoBSP 測試一遍, 掌握了一些要注意的基本事項後 基本上就是Graphics/Input subsystems
在X Windows 上還測過 MatchBox 換成 LXDE 之後應該會試著把LxQt 與 Meta

其他的Graphics backend 像是 Wayland/XWayland/FB 也都基本測一下

然後開始看寫Qt Application 的SDK 確注意到 Qt有個 QT Device creation 的商業版本, 本來看到是商業版本不太想管了, 但是卻看到 網站上的一篇 Building Your Own Embedded Linux Image 發現它是一個OpenEmbedded recipes  而且預先支援的的版子就有我手上同一系列的版本 就好奇研究一下, 基本上跟porting 一個Yocto bsp 到自訂的版子上沒啥差別, 因為基本上Qt5 要有的就是那個Graphics backend 基本上只要有OpenGL ES 2 含以後版本的支援, 應該不是難事

下面是我fork 官網的boot2qt 去加上我公司自己的一塊版本 imx6dltinto 的測試版本, 基本上我只改了kernel/bootloader 指向我放在同一個帳號上的 repositories 其他照舊, kernel/bootloader 用的是NXP/Freescale 最後release 的 4.1.15_v2.0.1 patch

https://github.com/UBIQCONN/meta-boot2qt/commits/krogoth

基本上參考Qt網站上的那篇文章 把 boot2qt 從安裝 Device Creation 改成 底下

git clone https://github.com/UBIQCONN/meta-boot2qt boot2qt
cd boot2qt
b2qt-init-build-env help

其他步驟相同

Note: Work with Meteor and NodeJs on Ubuntu 14.04

Posted in Works with tags , , , on 2017 年 01 月 16 日 by Kun-Yi

去年某個案子開始用Nodejs/Meteor 不過是北歐的合作廠商負責的 我還是只負責底層 BSP porting 用的是Yocto Distribution 本來案子被我很快的呼嚨完客戶很快的就量產 但是技術債就是這樣遲早都要還 經過半年後 客戶發現某一部份功能不太穩定 希望我這邊重新看看可不可以修正

結果卻發生怎樣都沒辦法build meteor package 重新裝了 meteor/build-essential/nodejs … 等等
還是 build failed 跟之前作案子時完全不同, 經過幾小時嘗試各種方式 然後去看build log 只知道某些 npm package 安裝 failed然後又重新裝各種 nodejs 0.10.x/npm/node-gyp … 還是無法解決 >_<

直到我重新review host 上的 gcc version 才發現目前default 用gcc-4.9, 起因是前幾周在測試 Qt5.6 ~ Qt5.8/Boot2Qt 等等時, 它需要切換到gcc-4.9 配合新的語言標準才行,

但是此時卻發生了npm install packages failed後來透過 sudo update-alternatives –config 把gcc 切回gcc 4.8 果然解決問題

 

Tips:
Debug 中 學到下列
cd ~/.meteor/
ls -al可以看到安裝的meteor version
meteor->packages/meteor-tool/<RELEASE>/<PLATFORM>/meteor
curl https://install.meteor.com > meteor.install
vim meteor.install # 可以去找RELEASE 改成想要安裝的版本, 我自己的案子目前建議還是用 “1.3.2.4″ 目前抓到的應該是 “1.4.2.3″
修改過後用 cat meteor.install | sh 就可以安裝了