본문 바로가기

자동차 임베디드 SW118

T32 - 특정 이벤트 발생 시 특정 스크립트 실행하기 참고 문서 : Interrupt Service Routine 처럼T32가 특정한 이벤트를 감지했을때만 특정 스크립트가 실행되도록 구성할 수 있다 'ON' 이라는 커맨드를 사용하는 것이다.아래와 같은 양식으로 cmm을 작성하면된다.ON 어떤 이벤트>를 감지할 수 있는지, 어떤 액션>들을 실행할 수 있는지를 스터디하고 cmm을 구성하면 된다.일단 간단한 예시를 보자.(참고로 cmm커맨드는 대소문자 구분하지 않음)ON SYSUP GOSUB Fun_GoSub ; System Up 상태가되면 Fun_GoSub라는 서브루틴을 실행해라Fun_GoSub:print "System is Up"return위 커맨드를 해석해보면,T32 시스템 메뉴중에 System Up 이라는 버튼이 있는데. 유저가 이걸 눌러서 System.. 2024. 11. 30.
Aurix MCU Memory Protection 메모리 프로텍션 개념 정리 현재 실행중인 SW가 값을 읽고, 쓰고, 명령어를 실행하는 과정에서 접근할 수 있는,메모리의 범위를 하드웨어적으로 Setting 해 놓은 후,메모리 프로텍션 기능을 Enable 할 경우.지정되지 않은 메모리에 접근하려고 하면 트랩과 SMU Error 가 발생되는 기능이 메모리 프로텍션 기능이다 Ex)  예시메모리프로텍션 기능 활용을 위해 기억해야할 포인트는 3가지이다.- 접근 가능한 범위를 지정하기 (Range 셋팅)  1개가 아니라 여러 종류를 지정할 수 있음 (예를들어 아래와 같이 3개의 범위 지정)  Ex) 0x1000~ 2000 , 0x2000~0x3000,  0x3500 ~ 0x5000 - 위에 지정된 각 범위에 대하여 접근 권한 셋팅하기 . 근데 이것도 1개가 아니라 여러개를 지정해놓을 수 있.. 2024. 10. 3.
Aurix Swap flash 이슈 메모리 스왑 기능을 쓰는 상황일 때. FLASH 커맨드를 통해 flash write/erase/verify 등을 한다면 이때 target address는 물리 주소값을 적어야한다. flash 커맨드에서 아규먼트로 전달되는 주소값은 swap이 자동 적용 되지않는다.쉽게 말해서 Flash Erase 명령을 날린다고 할 때. 예를 들어 내가 실제 메모리 주소 0x8060 0000 영역을 지우고싶은 상황일 떄. 이 때 만약 B Bank가 활성화된 상태라고 가정하면. 단순히 0x8060 0000 영역의 값을 읽고(read) 싶은 상황이라면, 현재 B Bank가 활성화된 상태니까 unint32 test_data = (uint32*)(*(0x8000 0000)); 이런식으로 읽어야 8060 0000 으로 읽힐 것이다.. 2024. 9. 25.
Aurix Swap과 OTA 위에 필요한 핵심 개념들이 모두 잘 적혀있다.차량용 제어기에 OTA가 적용되면서 MCU에 메모리스왑 기능이 만들어졌다.이 기능의 목적은, 제어기가 동작중인 상황에서도 Sw를 업데이트하기 위함이다. 기존에 mcu sw 업데이트를 할 때는. 기존 sw가 설치돼있는 flash 영역을 지운 후, 지워진공간에 새로운 sw를 재설치하는 방식이었다.이 방식의 경우,  sw를 업데이트하려면 기존 sw를 지워야하므로, 기존 동작을 하면서 동시에 sw 업데이트가 불가하다.그래서 도입한 개념이 뭐냐면, FLASH를 A영역,  B영역 2개로 나눠놓은 후.기존 sw가 동작중인 상황에서 새로운 sw를 기존 flash영역이 아니라, 다른 flash 영역에 다운로드 시키는 것이다. ex)기존 sw가 A 영역에 있었다면, 새로운 SW.. 2024. 9. 25.
Aurix Trap 발생시키기 Trap에 대한 정보는Aurix User Manual이 아니라 아래의 Core Architecture User manual 문서에서 확인해야한다.홈피에서 다운로드 가능인피니언의 문서들은 뭐가 어딨는지 알기가 참 힘들다.   Class1 Tin6null 포인터에 변수값 write 하기class1 tin7A0 레지스터에 값 write 하기어셈블리 코드 필요class2 tin5CSFR(Core SFR) 레지스터에 포인터로 접근해서 값 write하기. CPU 관련 레지스터중에 Memory주소갖는 애들이 있다. ex)PXI 레지스터 등Class3 tin2함수콜 리커시브하게 무한하게 부르기class3 tin 7RFE(Return From Exception) 명령어를 트랩루틴이 아닌곳에서 부르기class4 tin2D.. 2024. 9. 5.
Aurix Contex Save Area 와 aurix trap 공부 Aurix CSA 컨셉 Aurix Trap 공부 함수콜,인터럽트,트랩 호출시 Upper Context는 자동으로 저장. Lower Context는 별도의 istruction 호출해야 저장됨 upper, lower context에 저장되는 정보는 아래와 같다.트랩이 발생된 위치 찾기 A11 레지스터(Return Address. 줄여서 RA) 레지스터를 활용한다. 트랩발생시 최초로 호출되는 코드. (트랩 백터테이블에 등록돼있는 함수) 에서 곧바로 트랩 발생위치를 찾으려면 이때는 CSA에 저장된거 말고 현재의 RA 레지스터값을 읽으면된다. 트랩 발생 -> 현재의 context가 저장 -> RA 값 업데이트 및 트랩 루틴 실행. 이므로, 이때는 RA 값을 읽어보면 트랩 발생 위치가 된다. 만약, 트랩 루틴에서 .. 2024. 9. 4.
기능안전과 mcu safety manual 개념이해 기능안전과 aurix safety manual 개념 이해 기능안전 aurix safety mechanism 개념 이해 배경지식. 주요 용어는 아래글 참고 https://newbie-developer.tistory.com/m/443 ◇ Fault(결함) 과 Failure(고장) 제품이 정상 동작 못하게 되는 상태가 고장 결함은 고장을 유발할 수 있는 비정상적 상태를 의미. 결함이 고장을 일으키는 것. 그러나 모든 결함이 고장을 일으키는 것은 아님. 고장이 좀 더 치명적인(?) 중요한 개념이라 볼 수 있다. 결함은 고장을 유발할 가능성이 있는 요소들(?)이랄까 ◇ random hardware fault vs systematic fault systematic은 일정한 조건에서 반복 재연 가능. 간단히 말하면 .. 2024. 8. 14.
T32 spotlight , T32 Highlight T32 변수 깜빡깜빡 1.메모리덤프, 레지스터. 페리펄럴 등에서 변경사항 생겼을때 깜빡거리기. 해당창 마우스 우클릭 후, 아래 커맨드 덧붙이기/Spotlight 2. watch window에 변수값 깜빡이기 %spotlight 2024. 7. 30.
Aurix 관련 T32 유용한 문서 아래 문서에 유용한 내용들이 굉장히 많음. 2024. 7. 24.