【教程】在Ubuntu下搭建ARM處理器 arm-linux-gcc 交叉編譯環(huán)境以及OpenJTAG + openocd 燒寫環(huán)境

在Ubuntu下搭建ARM處理器 arm-linux-gcc 交叉編譯環(huán)境以及OpenJTAG + openocd 燒寫環(huán)境


前言

本教程所用操作系統(tǒng)為Ubuntu 16.04缩歪,所用ARM處理器為Samsung S3C2440雁社,在FriendlyARM Mini2440開發(fā)板上進行操作掖棉,使用OpenJTAG + openocd 燒錄程序朗恳。

當然醋界,道理是相通的逢渔,所以在不同平臺下也只是稍微修改一部分的配置就可以了热凹。


步驟

1. 下載arm-linux-gcc交叉編譯工具赐俗,編寫程序宽闲。

接下來的文章我會發(fā)布我學習過程中寫的程序(C語言和匯編交互)
Makefile 可以這樣寫(以點亮led為例子):

led.bin:start.o 
  arm-linux-ld -Ttext 0 -o led.elf start.o 
  arm-linux-objcopy -O binary led.elf led.bin 
  arm-linux-objdump -D led.elf > led.dis
start.o:start.s 
  arm-linux-gcc -o start.o start.s -c

生成文件 led.bin 供后續(xù)使用

  • OpenJTAG 是一款調試/仿真工具众眨,這里用它來燒錄程序。我手頭上這個使用的是FT2232D芯片容诬,同時具備USB轉JTAG娩梨、USB轉串口功能。那么它和我們以前用JLink在Windows下的Keil MDK下開發(fā)stm32之類的有什么區(qū)別呢览徒?比如狈定,OpenJTAG可以用在Windows、Linux习蓬、MAC下纽什,而JLink只能用在Windows,并且在Linux下它的調試功能無法使用躲叼。因此芦缰,某種程度上,OpenJTAG更有實用性枫慷。

要時使用一種硬件让蕾,當然首先要安裝它的驅動程序了,我們需要到 intra2net 公司網站下載最新版(舊版當然也可以流礁,但可能在某些配置上就不一樣咯)的 libftdi 涕俗,這是OpenJTAG使用的FT2232D 芯片的底層驅動庫。(注意:需要先安裝libusb-dev)

下載解包后編譯安裝:

./configure
make
sudo make install

當然你也可以通過git下載源代碼神帅。

如果你也想安裝ftdi-eeprom(燒寫FT2232所連接的e2prom的工具)再姑,可用同樣的方法下載安裝。(注意:需要先安裝libconfuse-dev)

2. 安裝openocd

  • openocd是一個開源的JTAG上位機程序找御,目前支持很多種芯片了元镀,并且支持的芯片還在不斷增加中绍填。當然,由于源代碼都是公開的栖疑,并且可以自己編譯讨永,所以增加自定義的工具驅動程序也是相當容易的。

打開你的工作目錄遇革,打開終端卿闹,輸入:(當然你要安裝git : sudo apt-get install git)

git clone git://openocd.git.sourceforge.net/gitroot/openocd/openocd

之后你會得到openocd最新版的源碼


code
code

進入openocd的目錄,執(zhí)行:

sudo ./bootstrap
sudo ./configure --enable-ftdi --enable-usb_blaster_libftdi --enable-openjtag_ftdi --enable-maintainer-mode --enable-legacy-ft2232_libftdi
sudo make
sudo make install

上面 ./configure 的參數(shù)是根據(jù)我的板子定的萝快,如果要使用別的芯片锻霎,調試工具什么的,要進行相應修改揪漩,詳情:

./configure --help

安裝完畢之后旋恼,執(zhí)行

openocd -v

會輸出版本信息:

Open On-Chip Debugger 0.10.0-dev-00251-g888d5a5-dirty (2016-04-24-13:35)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html

3. 配置 openocd.cfg

可以參考以下配置文件:(這里我也是根據(jù)自己的情況配置,具體視硬件而定)

interface ftdi
ftdi_device_desc "USB<=>JTAG&RS232"
ftdi_vid_pid 0x1457 0x5118

ftdi_layout_init 0x0f08 0x0f1b
ftdi_layout_signal nSRST -data 0x0200 -noe 0x0800
ftdi_layout_signal nTRST -data 0x0100 -noe 0x0400

jtag_khz 1500

if { [info exists CHIPNAME] } { 
  set _CHIPNAME $CHIPNAME
} else { 
  set _CHIPNAME s3c2440
}

if { [info exists ENDIAN] } { 
  set _ENDIAN $ENDIAN
} else { 
  # this defaults to a bigendian 
  set _ENDIAN little
}

if { [info exists CPUTAPID] } { 
  set _CPUTAPID $CPUTAPID
} else { 
  set _CPUTAPID 0x0032409d
}

#jtag scan chain
jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0x0f -expected-id $_CPUTAPID

set _TARGETNAME $_CHIPNAME.cpu
target create $_TARGETNAME arm920t -endian $_ENDIAN -chain-position $_TARGETNAME
$_TARGETNAME configure -work-area-phys 0x40000000 -work-area-size 0x4000 -work-area-backup 1

#reset configuration
adapter_nsrst_delay 100
jtag_ntrst_delay 100
reset_config trst_and_srst

#-------------------------------------------------------------------------
# JTAG ADAPTER SPECIFIC
# IMPORTANT! See README at top of this file.
#------------------------------------------------------------------------- 
  adapter_khz 12000 
  #jtag interface
#-------------------------------------------------------------------------
# GDB Setup
#------------------------------------------------------------------------- 
  gdb_breakpoint_override hard
#------------------------------------------------
# ARM SPECIFIC#------------------------------------------------ 
  targets 
  arm7_9 dcc_downloads enable 
  arm7_9 fast_memory_access enable 

  nand device 0 s3c2440 $_TARGETNAME 

  adapter_nsrst_delay 100 
  jtag_ntrst_delay 100 
  reset_config trst_and_srst 
  init 
  
  echo "--- login with - telnet localhost 4444 ---"

4. 啟動openocd

將開發(fā)板連接的OpenJTAG的USB接口接入PC奄容,在終端輸入:

openocd -f openocd.cfg

成功接入之后冰更,打開另一個終端,輸入:

telnet localhost 4444

進入操控指令方式

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Open On-Chip Debugger
> 
  • 輸入 poll 昂勒,顯示開發(fā)板當前信息
  • 輸入 halt 蜀细,暫停
  • 輸入 resume ,恢復
  • 輸入 reset 叁怪,復位

以燒寫以個點亮LED的程序為例子:

halt //先暫停當前程序的運行
nand probe 0//識別出Nand Flashnand 
erase 0 0 0x20000//擦除0地址開始的128K內容
nand write 0 led.bin 0//寫入LED.bin
reset//復位

然后就可以看到LED亮了审葬!


歡迎閱讀

我的后續(xù)學習過程的 程序分享 & 解析

謝謝閱讀,^ _ ^

部分參考資料來自:http://blog.chinaunix.net/uid-20543672-id-94365.html


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末奕谭,一起剝皮案震驚了整個濱河市涣觉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌血柳,老刑警劉巖官册,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異难捌,居然都是意外死亡膝宁,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門根吁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來员淫,“玉大人,你說我怎么就攤上這事击敌〗榉担” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長圣蝎。 經常有香客問我刃宵,道長,這世上最難降的妖魔是什么徘公? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任牲证,我火速辦了婚禮,結果婚禮上关面,老公的妹妹穿的比我還像新娘坦袍。我一直安慰自己,他們只是感情好缭裆,可當我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布键闺。 她就那樣靜靜地躺著,像睡著了一般澈驼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上筛武,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天缝其,我揣著相機與錄音,去河邊找鬼徘六。 笑死内边,一個胖子當著我的面吹牛,可吹牛的內容都是我干的待锈。 我是一名探鬼主播漠其,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼竿音!你這毒婦竟也來了和屎?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤春瞬,失蹤者是張志新(化名)和其女友劉穎柴信,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宽气,經...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡随常,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了萄涯。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绪氛。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖涝影,靈堂內的尸體忽然破棺而出枣察,到底是詐尸還是另有隱情,我是刑警寧澤袄琳,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布询件,位于F島的核電站燃乍,受9級特大地震影響,放射性物質發(fā)生泄漏宛琅。R本人自食惡果不足惜刻蟹,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望嘿辟。 院中可真熱鬧舆瘪,春花似錦、人聲如沸红伦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽昙读。三九已至召调,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蛮浑,已是汗流浹背唠叛。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留沮稚,地道東北人艺沼。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像蕴掏,于是被迫代替她去往敵國和親障般。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內容

  • 姓名:吳兆陽 學號:14020199009 轉自韋東山 嵌牛導讀:對嵌入式初學者盛杰,沒有足夠的視野選擇一個合適投入方...
    吳兆陽閱讀 2,387評論 0 4
  • Ubuntu的發(fā)音 Ubuntu,源于非洲祖魯人和科薩人的語言募狂,發(fā)作 oo-boon-too 的音办素。了解發(fā)音是有意...
    螢火蟲de夢閱讀 99,262評論 9 467
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn)祸穷,斷路器性穿,智...
    卡卡羅2017閱讀 134,656評論 18 139
  • 再見了,我愛的人 希望沒有我的旅途你不會孤單 雖然依舊愛你雷滚,但我們必須再見了 以后的以后需曾,都會是你自己拼搏奮斗 再...
    二楠閱讀 187評論 0 2
  • 1/30 天氣有些涼了,風倒不是很大,也不猛烈呆万,但還是在微微地吹著商源,吹得人在沉悶的氣氛中一激靈地清醒。搖動的細樹枝...
    柴子恒閱讀 228評論 0 0