原文出处:刘建文 | 学术半·IT歌·文(http://arttech.us)
我是一位理论帝,想问题做事情更多的会从形而上的角度入手。这个结论的证据之一,是从我研究学习嵌入式Linux近一年后才决定购一台掌上电脑做实验。年初的时候就有朋友建议我购一块开发板,通过做实验快速掌握开发技术。但我并不以为然,首先,我认为基本功更重要,开发技术可短期内习得;什么是基本功,对内核结构的深度把握,对硬件的透彻理解;其次,我想我花三五百购块开发板做完后还有什么用?前一个想法的结果是十月底我才购一台机器做实验,后一想法的结果是我购的是诺基亚的n800,而不一次性的祼机板。
到目前为止我在n800上做了两个简单的实验,本文记录实验全程,不求同和,但求录之以照后来人。
第一个实验交叉编译一个hello模块到n800上,验证开发环境和开发硬件等的可用性;第二个实验是定制一个新内核到n800上,新内核中触摸屏和小键盘以模块形式加载,而非默认的内置。
Nokia N800 设备元信息
- OMAP2420 microprocessor with a native speed of 400 MHz
- Memory : 128 MiB of RAM and 256 MiB of flash memory
- Connectivity : IEEE 802.11 b/g, Bluetooth 2.0 (DUN, OPP, FTP, HFP, HID profiles as well as A2DP/AVRCP and PAN via third party emulation), and USB 2.0 OTG high-speed.
- Display & resolution: pressure-sensitive resistive touch-screen LCD 4.1 inches 800×480 at 225 dpi
- Expansion : 2 full-sized Secure Digital card slots
- Camera : built-in pop-up rotating webcam.
- Audio : microphone, stereo speakers, FM radio tuner, 3.5-mm headphone jack (compatible with standard stereo headphones, but also containing a fourth pin with microphone input).
主要设备芯片(控制器)型号
- OMAP2420 N8x0 System-on-chip
- TMS320 C55x N8x0 DSP
- OMAP video N8x0 Video output
- PowerVR MBX N8x0 OpenGL ES and OpenVG acceleration
- OMAP Boot Tags N8x0 Provides boot information from bootloader (NOLO)
- OMAP MMC N8x0 SD/MMC cards
- tcm825x N8x0 Webcam + i2c bus
- tea5761 N800 FM radio
- blizzard N8x0 LCD controller
- menelaus N8x0 GPIO extender + i2c bus + ???
- tmp105 N8x0 Temperature sensor (menelaus GPIO)
- McSPI N8x0 SPI bus
- Sharp LS041Y3 N8x0 LCD panel (compatible with MIPID)
- cx3110x / stlc4550 N8x0 802.11b/g WiFi
- tsc2301 N800 Touchscreen + Keypad + GPIO + Audio
- OneNAND N8x0 Flash memory
- TUSB6010 N8x0 USB
开发过程
- 搭建开发环境
- 定义项目布局
- 搭建交叉编译开发环境
- 通过USB互联n800和开发PC
- 实验一——hello测试模块
- 实验二——定制模块化内核
- 编译内核及驱动模块
- 修改initramfs
- 烧制
搭建开发环境
定义项目布局
- 项目主目录:~/n800
- kernel src:~/n800/maemo/kernel-source-diablo/kernel-source
- 交叉编译工具链:~/n800/cross-tools
- 辅助构建工具:~/n800/build-tools
- 测试项目:~/n800/projects/hello_module | modulize_kernel
搭建交叉编译开发环境
1. 下载maemo4.1源码和补丁 :