顯示具有 BeagleBone 標籤的文章。 顯示所有文章
顯示具有 BeagleBone 標籤的文章。 顯示所有文章

2015年1月31日 星期六

BotBone: Reactive image with D3.js

假日中為我們的 BotBone 計畫設計一款互動式界面。我先以手機拍照,以 Inkscape 將照片內嵌到 SVG 檔中。再以 D3.js 加上互動元件。

初步成果如下圖:
這工作耗費我兩天的時間,接下來就要讀取 BotBone 的 I/O,並依據實體 I/O 的狀態,動態地改變圖片上的互動元件。

未來希望能將這類工作簡化。最好一小時就能完成。

2014年4月1日 星期二

Mapabone 硬體設計之一

目前正在設計一款針對創客社群,類似 Raspberry Pi 和 Beaglebone,但是更強調 realtime 性能以及運動控制的軟硬體平台。這個軟硬體平台暫時命名為 Mapabone。目前的硬體設計原則如下:

  1. 參考 Beaglebone 的設計,但針對其複雜不便之處加以簡化。
  2. 擁抱 Raspberry Pi 的 pin definition 以擁抱 Raspberry Pi 社群。
  3. 擴充更多的 I/O 腳位以方便設計週邊。
  4. 內建 FPGA 以實現 MPU 無法達到的性能。
此外還進行其他的修正,以附合我心中好用的運動控制硬體平台的形象。

I'm designing for makers a software/hardware platform, which likes Raspberry Pi or Beaglebone, but emphasize realtime performance and motion control. I named this software/hardware platform Mapabone temporarily. My design guidelines are:

  1. Adapt the design of Beaglebone, but simplify its complexity.
  2. Embrace the P1 pin definition of Raspberry Pi, to embrace the Raspberry Pi community.
  3. Add more connectors to facilitate the development of peripherials.
  4. Embed an FPGA to provide performance which can not be achieved with MPU.
Many other improvements are underway in order to realize the ideal motion control platform in my mind.

進行這設計已有一段時間。已完成腳位的分析,開始進行線路的修改。但因為我從未使用過 OrCAD,在此一系列「Mapabone 硬體設計筆記」中記錄我在修改線路時的各種經驗,以及對這硬體平台的想法。

第零課:New project 和 New design

首先學習建立一個新的 Project 和 Schematics。選擇 File->New->Project...
輸入 project 名稱及位置,並選擇要進行的設計是 Schematic。
這樣就可以開始了!

第一課:Place Part

就是把零件放在設計圖面上,再用線連起來。我學會了置放以下的零件:電阻(R)、電容(C)、電感(L)、電源(V)。作法很簡單,選擇 Place->Part,再選擇零件。比較難的是要知道如何找到這些零件。最快的方法是輸入零件的第一個字母再在清單中尋找。以下是我們用的元件。

  • R/ANALOG
  • C/ANALOG
  • L/ANALOG
  • VPULSE/SOURCE

再來是接線和地線,分別選擇 Place->Wire 和 Place->Ground。

以下是我的完成圖:



2013年10月12日 星期六

學習筆記:Debian on Beaglebone

首先參考 Compile Linux Kernel 3.2 for Arm and Emulate with QEMU
這篇文章中不討論 u-boot, 因此編譯的核心是 zImage 而非 uImage。只利用 initramfs 執行一個很小的 init 程式。

安裝 Emdebian Toolchain

再來參考 How to Cross Compile Arm Kernel under Ubuntu-10-10
這篇講如何編譯 Ubuntu,但是同樣的作法用在 Debian 不成功。末尾說明了如何編從 kernel.org 拿到的核心,到是可以用的。只是沒說明編了 uImage 後要如何和 u-boot 結合。

之後參考 Installing Debian On TI BeagleBone
這篇使用 linaro-image-tools 和 live-build,以及 qemubuilder 。
依照文中的方法建造 Debian binary rootfs 不成功。
之後再試建造 u-boot,但之前使用 qemubuilder 失敗過,得到以下訊息,
   FATAL: kernel too old
據說是因 c 函式庫的新舊問題造成,我沒時間思考如何解決,因此先放棄。
建造 kernel 也使用 qemubuilder,因此放棄。
再來是 hwpack。這部份不熟,先擱置。

再參考 BeagleBone Debian Wheezy snapshot armhf based RootFileSystem
先取得 cross-compilers:
   $ wget -c https://launchpad.net/linaro-toolchain-binaries/trunk/2013.07/+download/gcc-linaro-arm-linux-gnueabihf-4.8-2013.07-1_linux.tar.xz
   $ tar xJf gcc-linaro-arm-linux-gnueabihf-4.8-2013.07-1_linux.tar.xz
   $ export CC=`pwd`/gcc-linaro-arm-linux-gnueabihf-4.8-2013.07-1_linux/bin/arm-linux-gnueabihf-
確定是 32bit 版本:
   $ {CC}gcc --version
取得最新版的 u-boot:
   $ git clone git://git.denx.de/u-boot.git
   $ cd u-boot/
   $ git checkout v2013.07 -b tmp
patch 後進行編譯:
   $ wget -c https://raw.github.com/eewiki/u-boot-patches/master/v2013.07/0001-am335x_evm-uEnv.txt-bootz-n-fixes.patch
   $ patch -p1 < 0001-am335x_evm-uEnv.txt-bootz-n-fixes.patch
   $ make ARCH=arm CROSS_COMPILE=${CC} distclean
   $ make ARCH=arm CROSS_COMPILE=${CC} am335x_evm_config
   $ make ARCH=arm CROSS_COMPILE=${CC}
接下來編譯 kernel,在此不使用作者提供的 git.sh, 因曾無法 git clone 或 fetch from kernel.org 而出問題。而且未來將針對特定的 branch 進行 patch。作法如下:

。不使用文中所用的 git.sh,因此先 clone 之後,修改 system.sh 中的 LINUX_GIT,並且將 scripts/git.sh 中所有從 kernel.org 取得 repository 的程式片段都放在註解中。之後就可以成功編譯。
可惜的是我在成功產生一個  3.2 的 MicroSD 後,以此 MicroSD boot linux,在 boot kernel  階段失敗。當掉的原因是因為我實際上產生的是 3.12 的 kernel 而非 3.2 的 kernel。
在 linux-dev 中執行
   git checkout origin/am33x-v3.2 -b tmp
並在 linux-src 中執行
    git checkout v3.2
後,成功。

再參考 Flashing Ubuntu 13-04 or debian wheezy to the beaglebone black emmc