Category Archives: Embedded

embedded system btrfs

這一篇是 btrfs 用在 embedded system 的開發測試上會用到的指令.
Read more »

[跟風] 程式設計師, 你調試過最難的 BUG

看到一篇文章
簡體中文翻譯: 程序员,你调试过的最难的 Bug 是?
原文: What’s the hardest bug you’ve debugged?

看原文比翻譯好一點, 從原文大概只可能猜出, 改過 timer 之後, 可能影響到 interrupt 的速度.
但是從最後的描述猜也可能是動到 clock tree 去影響 timer 進而影響到其他的行為.
有碰到這種 BUG 的第一個一定先猜 timing , 純軟體的反而不會這樣想, 所以他覺得最難的 BUG
我們看起來就還好.

這個描述讓我也想寫一下, 我碰過最難的 BUG.
Read more »

kernel rootwait option

之前都不知道 Linux kernel 有 rootwait option, 比 rootdelay=? 好用多了.

尤其是用 usb or mmc 之類的 device 當作 root, 常用於 embedded system .
(其實我也少用, 都混 IC vendor , rootwait 這種東西就交給系統廠去處理).

Example Command
[TEXT]
CONFIG_CMDLINE=”root=/dev/mmcblk0p1 rw init=/sbin/init mem=256M console=ttyS0,38400 rootwait”
[/TEXT]

STM32 的 USB DFU (Device Firmware Upgrade)

當用 STM32 (我用的是 Coretex-M 的 STM32F103ZC) 時, 如果沒有 ICE, 可以用 DFU 從 USB 切入 DFU Mode, 再用 USB 的軟體升級程式.

我不小心弄掛我系統的 DFU, 這邊稍稍講一下如何救回來
* 還是需要 ICE 的.
Read more »

Cortex-Mx STM32: Virtual COM port in Win7

如果在 Win7 下使用 Virtual Com port, 會有抓不到的狀況, 請使用這個 STM32 Virtual COM port Driver

ref.
Cortex-Mx STM32: Virtual COM port in Win7 or Vista 32-bit

[ARM][Linux] 建立 ARM 平台的 Debian System

在 Embedded system 下, 使用現有的系統驗證 SoC 功能是非常棒的.
最大的好處就是不用到處找工具編一堆有的沒有的, 時間可以花在更重要的地方

像我將 debian 裝好之後, 就可以跑 wireshark 了

本圖中, 最左邊的是 console, 中間的視窗是 EVB 上的 wireshark, 右邊的視窗是 PC 端的 wireshark
使用 wireshark *2 debug tcp stream

真是超好用的……

Read more »

ARM 的 Oprofile

最近在弄 ARM11 的 Oprofile, 結果發現執行 opcontrol 的動作之後, 沒有 log 的動作.
大致上的訊息是這樣的
[Bash]
# opcontrol –shutdown
Stopping profiling.
Killing daemon.
# Stopping profiling.
Killing daemon.
opreport image:/vmlinux -l -w -g > oprofile.txt
error: no sample files found: profile specification too strict ?
[/Bash]

這時請改用 timer interrupt

在 load oprofile modules 加上 timer=1
若是 static link 時, 就要在 boot_cmd 加上 oprofile.timer=1

似乎目前的 kernel oprofile 不支援 ARM11MPCore.

http://oprofile.sourceforge.net/doc/detailed-parameters.html#timer

[Linux][Kernel][Memory] smbd: page allocation failure. order:2, mode:0x20

如果啟動了 Jumbo Frame 加上執行 Samba , 有可能會出現類似的訊息(系統抓下來似乎有點不全)

Read more »

ARMv6 的 Word Swap 指令

ARMv6 加入了幾個好用的 Swap 指令. 不需要用軟體算來算去
請參考 http://www.arm.com/pdfs/ARMv6_Architecture.pdf

REV
REV16
REVSH

ARM_REV

最常用的應該是 REV 吧.

Realview inline assembly 很簡單.

[C]unsigned int tmp = 0x12345678;
__asm{
REV tmp, tmp
}[/C]

GNU C++ inline assembly 為(未測)

[C]
unsigned int tmp = 0x12345678;
__asm__ __volatile__ (
“REV %0,%0;” : “=r”(tmp) : “r”(tmp):”r5”);
);[/C]

[新聞][想法] Android Porting 到 EeePC 之後.

畫虎爛時間又到了, 今天要講評的是, Android Porting 到 EeeePC 這件事.

首先是 EeeePC 可以執行 Android 平台.
Android平台,並不是只有手機,連輕省筆電也有?

3160503771_cd8a12da38 (by richliu(有錢劉))

再來就是 HP Mini 的平台.
筆電跑Android又一例:HP Mini-Note 2133影片實況紀錄

hp-2133-android- (by richliu(有錢劉))

Read more »