자동차 임베디드 SW/Aurix MCU23 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. Aurix Smu Test하기 알람 띄우는 제일 간단한 방법 Lockstep 고장 발생시키기 ▣ SCU 모듈에 Lockstep fault injection 기능이 있다. 아래 레지스터에 값 1 써서 Lock step 고장 발생시킬 수 있다.▣ CPU0에 대한 Lockstep 에러 발생시, ALM0[0]이 뜬다. CPU1에 대한 Lockstep 에러 발생시, ALM1[0]이 뜬다. (아래 Appendix 참조) 2024. 7. 12. Aurix SMU 헷갈리는 것 기록 ◇ Alarm Status 레지스터는 mcu reset(app,sys) 발생시 clear 된다.또한, 커맨드를 통해서도 clear 가능◇Alarm debug 레지스터는 오직 power on reset 때만 지워지고 유저가 임의로 지우는것도 불가함.읽는다고 자동으로 지워지지도 않고, 강제로 지울 수도 없음.참고로 cold power 뿐만아니라 warm power 때도 clear 됨◇ 알람에 대한 리액션(리셋.ISR 등)은 Smu_core 의 state가 Run 또는 Fault 일때만 발생됨. start state에서는 알람이 떠있더라도 리액션이 일어나지 않음. 참고로 smu_init 호출한다고 smu state가 run이 되는 것이 아니고 run으로 보내는 명령은 별도로 있음.참고로 smu init 호출전.. 2024. 7. 4. Aurix Watchdog 기능 정리 aurix 와치독. aurix watchdog ■ 실무 핵심 기억 포인트 - T32 연결된 상태에서는 와치독이 동작하지 않는다.(enable 해도 타이머가 멈춰있음) system.option.wdtsus on 을 적용해야 디버거 연결상태에서도 정상 동작한다. - 와치독 타이머 값은 직접 write하는게 아니라 REL 값을 새로 쓰면, 해당 값이 timer 에도 셋팅되는 개념이다. (Ex. REL에 100이라고 쓰면 타이머 값도 100으로 셋팅됨) (참고. REL 쓰는 레지스터랑 Timer 레지스터는 별개의 레지스터임) - 와치독 관련 레지스터 값 변경하려면 password access, modify access라는 절차를 거쳐야한다. (유저매뉴얼에 쓰여 있음) - cpu0 와치독은 디폴트로 켜져있고 나머.. 2024. 6. 19. 이전 1 2 3 다음