Thứ Năm, 31 tháng 3, 2011

Build Linux kernel

Cách thức để build linux kernel cho FriendlyARM kit (chip S3C2440 của samsung, lõi ARM 9)

Phần I. Build Image
1) Down load các file cần thiết, hoặc copy từ trong đĩa cài đi kèm với kit
- Source code linux kernel: linux-2.6.32.2-mini2440-20100921.tar.gz
- Trình biên dịch chéo (tool chain): arm-linux-gcc-4.4.3.tar.gz
- Boot loader: vboot-src-20100727.tar.gz

2) Cài đặt trình biên dịch chéo
b1) Giải nén file: arm-linux-gcc-4.4.3.tar.gz
b2) Add thêm biến môi trường cho user hiện tại
Sửa file: ~/.bashrc thêm dòng sau vào cuối file
export PATH=/yourdir/opt/FriendlyARM/toolschain/4.4.3/bin:$PATH
Trong đó yourdir là đường dẫn đền thư mục chứa arm-linux-gcc

3) Giải nén file: linux-2.6.32.2-mini2440-20100921.tar.gz vào một thư mục nào đó
ví dụ: /home/hiephv/arm-kit
cd /home/hiephv/arm-kit


4) Chạy make menuconfig

Chú ý bước này thường sẽ đọc cấu hình từ file .config (trong thư mục linux-2.6.32.2, file này ban đầu sẽ chưa có gì do chưa chạy lần nào). Tuy nhiên thông thường các hãng sản xuất sẽ có recommend cấu hình cần chọn cho kit và để trong file cấu hình của hãng (ví dụ: config_mini2440_n35, config_mini2440_t35)
Do đó để tiết kiệm thời gian và chính xác: nên copy file cấu hình của hãng vào file .config trước khi chạy make menuconfig

Lưu ý rằng, chương trình ncurses để tạo giao diện cấu hình có thể làm thay đổi
file “.config”. Có thể test thử bằng cách load và save các file config có sẵn và kiểm tra size của file. Việc này có thể/hoặc không gây panic khi chạy kernel.

5)Build kernel image file
# make -j4 ARCH=arm CROSS_COMPILE=<arm_toolchain_folder>/bin/arm-none-
linux-gnueabi- uImage

6) Build kernel modile file
# make -j4 ARCH=arm CROSS_COMPILE=<arm_toolchain_folder>/bin/arm-none-
linux-gnueabi- modules

Phần II. Nạp Image xuống kit
1) Cài đặt môi trường phát triển trên linux cho Friendly ARM kit
- Chương trình debug console: minicom
apt-get install minicom
- Chương trình download dữ liệu xuống kit (usbpush)
Download file thực thi s3c2410_boot_usb từ internet (các file cần down xuống kit để cùng thư mục với file này)