2016-11-04 5 views
0

기본적으로 ARM Cortex M3에 대한 간단한 커널이라고 불리는 사용자 응용 프로그램을 만들어야합니다. 커널 및 사용자 응용 프로그램은 현재 다른 uVision 프로젝트입니다. 커널은 모든 HW 예외 (SVC, PendSV, Hardfault 등)를 처리합니다.armcc를 사용하여 ARM Cortex M3 용 HW 예외 처리기없이 이미지를 만드는 방법

사용자 응용 프로그램은 startup.s 파일을 사용하여 특정 주소에 있으며 커널은 정적 주소에서이 사용자 응용 프로그램을 시작할 수 있습니다.

반면에 사용자 응용 프로그램의 startup.s 파일에는 HW Exception Handler 정의도 포함되어 있지만 사용자 응용 프로그램은 절대로 hw 예외를 처리하지 않거나 처리해서는 안됩니다. 커널 책임하에 있어야합니다.

프로젝트 또는 빌드에 대한 HW 예외 처리를 비활성화/무시/방지 할 수 있습니까? (사용자 앱 구축시 코드, 스택 및 데이터 섹션 주소 만 알려야합니다.)

+1

나는 분명한 질문을해야합니다. HW 예외 처리기 정의를 제거하기 위해 사용자 응용 프로그램의 startup.s 파일을 편집 해 보셨습니까? –

+1

응용 프로그램에 대한 시작 코드를 사용하고 벡터 테이블을 제거하십시오 (거의?). –

답변

0

감사합니다. 예, 당신이 제안한 것처럼, startup.s에서 벡터 테이블을 제거했을 때 작동하는 것처럼 보입니다.

또한 Reset_Handler 대신 주 기능을 대체 했으므로 주 기능을 시작점으로 사용할 수있었습니다. (커널은 이미 전체 시스템을 초기화) 첫 번째 단어는 SP를 보여주고 있지만, 두 번째 쇼 코드 시작점 (주)

내 간단한의 Startup.s 파일은 이제

; Vector Table Mapped to Address 0 at Reset 

       AREA RESET, DATA, READONLY 
       EXPORT __Vectors 
       IMPORT __main 

__Vectors  DCD  __initial_sp   ; Top of Stack 
       DCD  __main     ; Start Point 

감사합니다.

+0

주 :이 코드는 데이터 세그먼트를 초기화하지 않습니다. 그러나이 tak는 이미 커널에 의해 이미 수행되었을 것입니다. –