Friday, March 30, 2012

SQLite3 移植 ARM9 架構 (S3C2440)

從來沒有想過還會再跟嵌入式碰面! 我深深地認為這系列的文章是一場惡夢,沒有學的很懂 :)
機緣巧合桌子上出現了具有 S3C2440 CPU 的 ARM9 板子,而目的就只有一個: 把 x86 的某個 C 語言放到上面跑。根據這個需求和觀看了一下程式,大致上分為兩個部分,分別是 SQLite3 移植到 ARM9 以及特定的 C 語言移植到 ARM9,底下僅分享 SQLite3 移植到 ARM9 的步驟。

以下分為五個操作步驟做說明:

1. 建立 Toolchain
偉大的 Toolchain 是強者同事編譯好之後給我的,因此本次操作是站在巨人的肩膀上完成,實在是很幸運。觀看歷史操作 History 感覺做了許多事情,可能是之前學藝不精,霧煞煞無法領會 :P
開發環境路徑如下
// Cross Compiler 路徑
/usr/local/arm/
// 操作路徑
/home/bernie/Desktop/SQLite/

2. 編譯與組譯 SQLite3
下載 SQLite 原始碼 解壓縮 Source
mv ~/Download/sqlite-autoconf-3071000.tar.gz ~/Desktop/SQLite
cd ~/Desktop/SQLite/
tar zxvf sqlite-autoconf-3071000.tar.gz
建立安裝資料夾(Build)
cd sqlite-autoconf-3071000
mkdir arm-linux
組譯
// PWD 是當前的資料夾
./configure --host=arm-linux --prefix=`pwd`/arm-linux
編譯
make clean
make && make install

3. 準備相關的檔案資訊
  • /bin : 放到  ARM 開發版 /usr/bin
  • /include : SQLite C 語言的 API (僅編譯需要)
  • /lib :  libsqlite3.so.0.8.6 動態連結檔
關於重要的動態連結檔
  • 開發版放到 /lib
  • 開發機放到 cross compiler 的 /lib,我的例子是 /usr/local/arm/arm-linux/bin
兩邊都建立 Software link,指向 libsqlite3.so.0.8.6
ln –s libsqlite3.so.0.8.6 libsqlite3.so
ln –s libsqlite3.so.0.8.6 libsqlite3.so.0

4. 移植測試: Command line 執行
sqlite3 test.db
SQLite version 3.7.11 2012-03-20 11:35:50
Enter ".help" for instructions
Enter SQL statements terminated with a ";"

sqlite>
有出現,就是成功!其他指令網路上再看看吧 :)

5. 移植測試: 動手寫一個 C 程式與 SQLite 互動
直接參考 [4. ] 的 sample code,大絕就是複製貼上,頂多就是改一下 int main(){... return 0;} 

編譯與執行程式
arm-linux hello_sqlite3.c –o hello_sqlite3.o

// 將執行檔放到板子上跑~
chmod 644 hello_sqlite3.o
./hello_sqlite3.o

到此完成 SQLite3 porting ARM 的操作!

Reference

[1. ] Android + Mini2440无线网络视频监控系统(三)SQLite的移植
[2. ] Sqlite3.3.6移植详解
[3. ] Embedded System 修課紀錄(1-1)
[4. ] 就讓 C 語言和 Sqlite3 擦出火花吧

No comments:

Post a Comment