1. 程式人生 > >用IAR和jlink除錯s3c6410裸機程式

用IAR和jlink除錯s3c6410裸機程式

正如標題說的那樣,中間過程就不細說了,參考了很多網上的資料。

---------------------------------------------------------------------------

1、確定jlink是否識別ARM11核,我們連結好jlink和開發板,開啟jlink commander如下所示:



如果出現上面的畫面,意味著你的jlink能識別ARM11核,如果識別不了,可以換個jlink驅動試試。

-----------------------------------------------------------------------------------

2、

先用IAR建立一個工程,裸機的初始化檔案,就用安裝目錄中的

IAR Systems\Embedded Workbench 6.0\arm\src\lib\arm\cstartup.s稍作修改即可,其實修改的很簡單,如下所示:

------------------------------------------------------------------------

原檔案修改的部分:

        ;; Turn on core features assumed to be enabled.
          FUNCALL __iar_program_start, __iar_init_core
        BL      __iar_init_core


        ;; Initialize VFP (if needed).
          FUNCALL __iar_program_start, __iar_init_vfp
        BL      __iar_init_vfp


;;;
;;; Add more initialization here
;;;


;;; Continue to __cmain for C-level initialization.


          FUNCALL __iar_program_start, __cmain
        B       __cmain


        END

------------------------------------------------------------------------

修改後的部分:

        ;; Turn on core features assumed to be enabled.
         ; FUNCALL __iar_program_start, __iar_init_core
     ;   BL      __iar_init_core


        ;; Initialize VFP (if needed).
         ; FUNCALL __iar_program_start, __iar_init_vfp
       ; BL      __iar_init_vfp


;;;
;;; Add more initialization here
;;;


;;; Continue to __cmain for C-level initialization.


       ;   FUNCALL __iar_program_start, __cmain
        B       main


        END

-----------------------------------------------------------------------

然後就可以把我們自己的c語言寫的主函式檔案加進去了,下面這個是網上找的流水燈,可以根據自己的開發板修改:

#include <stdlib.h>


#define rGPMCON (*(volatile unsigned *)(0x7F008820))
#define rGPMDAT (*(volatile unsigned *)(0x7F008824))
#define rGPMPUD (*(volatile unsigned *)(0x7F008828))


void msDelay(int time)
{
volatile unsigned int i,j;
for(i = 0; i < 2000000; i++)
for(j=0; j<time; j++);
}


void GPIO_Init(void)
{
rGPMCON = 0x11111;
rGPMPUD = 0x00;
rGPMDAT = 0X1F;
}
void LedTest(void)
{
volatile unsigned int i;
while (1)
{
for(i=0; i<4; i++)
{
rGPMDAT = ~(1<<i);
msDelay(10);
}
}
}
void main(void)
{
  GPIO_Init();
  LedTest();
}

-------------------------------------------------------------------------

3、

還涉及到一個檔案,是連結是要用到的,可以用下面這個檔案稍作修改,修改後,放到自己的工程目錄下,下面要用到。

IAR Systems\Embedded Workbench 6.0\arm\config\generic.icf

------------------------------------------------

其實主要修改下面這一部分,把它改為自己的記憶體配置即可:

/*###ICF### Section handled by ICF editor, don't touch! ****/
/*-Editor annotation file-*/
/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\a_v1_0.xml" */
/*-Specials-*/
define symbol __ICFEDIT_intvec_start__ = 0x0;
/*-Memory Regions-*/
define symbol __ICFEDIT_region_ROM_start__   = 0x80;
define symbol __ICFEDIT_region_ROM_end__     = 0x7FFFF;
define symbol __ICFEDIT_region_RAM_start__   = 0x100000;
define symbol __ICFEDIT_region_RAM_end__     = 0x1FFFFF;

--------------------------------------------------

4、下面就是編譯器配置了


右鍵點選上圖,標記處,出現下圖,逐個配置即可:



上面這個圖,就是用3中那個檔案修改來的。


-----------------------------------------------------------------------

就這樣,編譯後,就可以下載到開發板中進行除錯了。

注:下載之前要把,開發板停在uboot下才可以,應該是對開發板做些初始化用,如時鐘等等。


出現下圖就可以,除錯了:


---------------------------------------------------------

相關推薦

IARjlink除錯s3c6410裸機程式

正如標題說的那樣,中間過程就不細說了,參考了很多網上的資料。 --------------------------------------------------------------------

windbg核心模式除錯使用者態程式

轉載自:https://blog.csdn.net/lixiangminghate/article/details/52847658 使用核心除錯會話也可以執行一些使用者態除錯任務,比如向位於使用者態的模組設定斷點。但這樣做與使用使用者態偵錯程式有什麼不同呢?我們就以向NTDLL.dll模組的Z

S3C2440 windows下使用jlink gdbserver,arm-none-eabi-gdb進行裸機程式編寫除錯

一開始是學stm32的,一直用MDK下載除錯程式,非常方便。後來轉學嵌入式Linux,在Linux下進行u-boot和Linux核心的移植,一直沒有用到硬體除錯功能,都是通過列印串列埠資訊或者led來除錯,大部分情況下能夠奏效,這也是因為u-boot和linux核心本身的程

STM32F030IAR+JLINK線上除錯無法下載FLASH問題

Fri Nov 14, 2014 17:22:59: ST-Link firmware too old Fri Nov 14, 2014 17:22:59: Connected to ST-Link/V2  Firmware V2.J21.S4 (Probe no: D1A2B612) Fri Nov 14,

windbg雙機除錯(本機VM虛擬機器)驅動程式

本文為在學習過程中的筆記,寫的不好請見諒. 在除錯核心驅動程式時,驅動程式被作業系統載入.而作業系統無法自己除錯自己.所以要用一臺計算機除錯另一臺計算機的作業系統,進而除錯核心驅動. 使用windbg對虛擬機器中的作業系統進行除錯之前,要先配置windbg和

ARM裸機程式研究 - 編譯連結

1. Linux下的二進位制可執行檔案。     如果世界很簡單,那麼二進位制可執行檔案也應該很簡單,只包括CPU要執行的指令就可以了。可惜,世界並不簡單……。Linux下的二進位制可執行檔案(以下簡稱可執行檔案),也並不是只包括了指令,還包括了很多其

本地tomcateclipse如何除錯vue、springboot:第一種eclipse本地除錯

20181019 Luke Liu: 首先要實現Eclipse Vue開發,我在下一篇部落格中介紹 前端vue專案是garcol_wx,在eclipse 的terminal中輸入npm run dev,執行程式。 在後臺專案Garcol中執行debug garco

【linux】Valgrind工具集詳解(六):使用Valgrind gdbserverGDB除錯程式

一、概述 在Valgrind下執行的程式不是由CPU直接執行的。相反,它執行在Valgrind提供的合成CPU上。這就是偵錯程式在Valgrind上執行時無法除錯程式的原因。 二、快速入門 在使用Memcheck工具時使用GDB除錯程式,啟動方式如下: 1、valgrind

C++QML混合的QT程式除錯方法

       以前除錯只是QML或者只是C++的QT程式很簡單,斷點打上,直接debug按鈕一點,喝一口水,自然就停在斷點了。 這次遇到C++和QML混合的程式,把       CONFIG+=declarative_debug       CONFIG+=qml_debug

eclipse整合開發環境開發、除錯arm linux程式

安裝交叉編譯器(arm-linux-gcc)以及整合開發環境(eclipse) 1.安裝arm-linux-gcc,不管你是從網上下載的,還是開發板光盤裡面的,都可以,版本也沒什麼限制,我的是arm-linux-gcc-4.3.2。   進入arm-linux-gcc

EclipseGDB構建ARM交叉編譯線上除錯環境

再次強調一次,GDB遠端除錯套件包括Host端的gdb和Target端的gdbserver,對於gdb,宿主機上發行版本自帶的PC版gdb是不能用的,它沒有目標架構(ARM)相關的除錯支援。所以我們應該使用gdb的原始碼,針對ARM平臺編譯一個(toolchain還是Host上的)特別的版本。當然,如果晶

嵌入式作業系統學習筆記:02.環境搭建兼 Eclipse Jlink 2440 ARM裸機除錯

注意本文圖片與GIF動畫較大,載入較慢,請耐心等待 環境搭配 儘管本文的環境是以Windows為例,但是Linux與Mac也是幾乎完全類似的。 硬體環境 板子:2440晶片的板子,但我只有TQ2440

S3C2440之裸機程式燒錄(eop+Jlink)

硬體環境: JZ2440 V3.0 EasyOpenJTAG J-Link ARM 3.分別使用燒錄指令碼: eop.bat: :JTAG(0:OpenJ

tiny4412 裸機程式 三、關閉看門狗呼叫C程式

一、原理說明 上是章中大家可能有會覺得奇怪,CPU不是有看門狗嘛?為什麼CPU沒有復位,程式還能正常工作呢? 檢視Eyxnos4412的手冊,第5章簡要的說明了其啟動順序,如下圖3-1所示是Eyxnos4412啟動順序圖,這裡雖然沒有說的很清楚,但內部iROM和BL1程式中

Qt 呼叫GDB除錯 Arm程式 詳細步驟----可單步執行每一行

前言本人交叉編譯環境 Ubuntu 10.04(虛擬機器),編譯工具鏈 arm-hisiv100nptl-linux,Qt 4.8.5 ,QtCreator1.3.11、在虛擬機器Ubuntu 10.04上,安裝GDB除錯工具之前,要安裝預處理模組:sudo apt-get

IAR不進除錯介面DEBUG介面,直接燒寫程式。完美解決,還可以新增到工具欄

廢話不多說!操作程式版本:IAR:3.10.4 下圖是預設工具欄  具體操作下圖 但是每一次就要點好幾次麻煩,好像也沒有快捷鍵!尷尬!!!不過可以自定義工具欄,是不是給我們開一扇窗,還不錯

【OK6410裸機程式】移植printfscanf

在學c語言的時候,經典的hello world程式,是通過printf函式實現了。有了這個函式,就可以隨意的向螢幕列印資料了。在嵌入式中,其實也是可以用printf函式的,不過需要稍微麻煩點的移植。畢竟,在嵌入式中,所有實現的都要自己來弄,不在向PC程式開發一樣,很

Python3tkinter開發簡單圖形介面程式 2018-09-28

原始碼庫: program-in-chinese/wubi_code_editor 起因在這裡. 由於此專案和漢字相關, 個人也想嘗試Python的圖形介面開發, 於是開始嘗試. 遇到的一個坑. 使用者測試時, 發現png圖片載入不了, 後發現是由於tkinter版本問題: T

最新ffmpeg編譯eclipse進行原始碼除錯(linux)

轉自:http://blog.csdn.net/huangkangying/article/details/6434683   最近由於專案需要,必須修改ffmpeg的原始碼進行修改才能滿足專案的需求,但以前我從來沒有自己去編譯和使用ffmpeg的原始碼,一直都是用別人

如何使用VisualStudio2013編寫除錯c語言程式

現在大多數同學用的電腦都是Windows 8和8.1,使用VC6.0存在相容性問題,對於初學者來說是一件很麻煩的事情。而Visual Studio 2013 是一個很強大的工具,很多同學選擇了vs2013卻不知如何使用,下面我就以簡單的工程為例,介紹一下使用vs2013