原創 基於S3C2440處理器SPI移植全過程

2021-08-28 12:44:11 字數 2323 閱讀 6410

環境

硬體:s3c2440(arm920t)

嵌入式作業系統:linux2.6.24核心

檔案系統:yaffs2檔案系統

伺服器:suse10.0 linux伺服器

第一步:核心配置

需要在核心中選擇以上幾個選項:

很多網友發郵件說linux2.6.24核心在spi選項上未發現有samsung s3c2440 series spi 或 samsung s3c24xx series spi 和user mode spi device driver support這兩個選項。

其實在linux2.6.24核心裡已經相容了對spi的操作。只是在linux2.6.24/drivers/spi/kconfig中未能選中此選項。至於什麼原因看下面的說明:開啟linux2.6.24/drivers/spi/kconfig

找到以下幾個選項:

config spi_bitbang

tristate "bitbanging spi master"

depends on spi_master #&& experimental

help

with a few gpio pins, your system can bitbang the spi protocol.

select this to get spi support through i/o pins (gpio, parallel

port, etc).  or, some systems' spi master controller drivers use

this code to manage the per-word or per-transfer accesses to the

hardware shift registers.

this is library code, and is automatically selected by drivers that

need it.  you only need to select this explicitly to support driver

modules that aren't part of this kernel tree.

使用spi的時候需要把bitbanging spi master開啟,但是依賴的條件experimental,這裡我們把這個條件去掉,然後再找到:

config spi_s3c24xx

tristate "samsung s3c24xx series spi"

depends on spi_master && arch_s3c2410 && experimental

select spi_bitbang

help

spi driver for samsung s3c24xx series arm socs

config spi_s3c2440

tristate "samsung s3c2440 series spi"

depends on spi_master && arch_s3c2410

select spi_bitbang

help

add by smallbox at 2011.02.18 spi driver for samsung s3c24xx series arm socs

以上藍色的字是我新增的。為了區別linux核心預設的配置!修改到這裡儲存,退出。然後開啟該目錄下面的makefile檔案,需要做以下修改:

新增:obj-$(config_spi_s3c2440)               += spi_s3c24xx.o

這裡說明一下:如果不想在kconfig中新增我新增的選項,這裡就不需要修改makefile檔案了。因為本身已經有對s3c24xx的支援!

修改後儲存退出!

下面需要修改的是linux2.6.24裡面的檔案:

1)開啟smallbox@linux-server:/home/linux2.6.24/arch/arm/plat-s3c24xx/devs.c 新增一下語句

這裡還需要說明一下,新增後編譯會出現錯誤。還需要增加相應的標頭檔案:

#include

#include

#include

如果還有錯誤,可能就是你的標頭檔案新增的不夠。繼續查詢新增,知道make成功;

2)開啟smallbox

@linux-server:/home/linux2.6.24/arch/arm/mach-s3c2440/mach-hyh2440.c 檔案新增

static struct platform_device *utu2440_devices __initdata = ;

儲存退出!

基於S3C2440的bootloader移植詳解

首先 在彙編中初始化堆疊,中斷向量表,mmu,時鐘,串列埠等,然後跳到c語言的main函式。這部分 小於4k,放在block0。這個main函式用來將第二段 拷備到dram中並執行。不說這麼多廢話了,說多了無益,讓我們一起來揭開bootloader的神秘的面紗吧!先說下我移植的bootloader的...

s3c2440的處理器結構和外設連線

1 s3c2440處理器結構 s3c2440處理器的結構如下圖所示,其核心單元為arm9tdmi處理器核,主要包括16k的指令cache和16k的資料cache,以及分開的指令和資料mmu單元等。cp15為乙個協處理器 co processor 通過amba2.0 advanced microcon...

求教 s3c2440問題

趙老師您好,我把您的程式新增到我的程式中去了,下面是主要 1 main函式 int main void a a b rgpbdat liushui delay 20 liushui liushui 0xffe 2 pwm初始化 void pwm init void 3 定時器中斷 static vo...