378 lines
14 KiB
Plaintext
378 lines
14 KiB
Plaintext
★1.기능안전 PMIC (w/MTCI) https://onefieldjira.renesas.com/browse/REKR_MOBIS-597
|
||
○PMIC 제어 위한 I2C 통신 中 End Notification 미 호출에 따른 수행 멈춤 (6/187/18)
|
||
?모비스 자체 Workaround 로 Spinlock 적용 후 재현 안됨
|
||
?Aging 하여 모니터링 中 (7/1)
|
||
|
||
○르네사스와 합동 점검 (7/1)
|
||
?문제 발생 시 특정 레지스터의 상태값이 변경되지 않음 → 르네사스 본사에 문의 中
|
||
?7/11 르네사스 답변이 달렸으나 문제되는 레지스터에 대한 내용이 아니어서 7/14에 레지스터에 대한 정보 재요청
|
||
|
||
> Mobis와 합동 점검 당시, I2C 하드웨어 회로도 이상 유무 확인, I2C 우선순위 변경, I2C 클럭 변경, 그리고 I2C 함수의 리턴값 확인 등을 진행하였으나, 별다른 문제는 발견되지 않았습니다.
|
||
> 이에 문제 발생 시와 정상 동작 시의 레지스터 값을 덤프하여 Jira(https://onefieldjira.renesas.com/browse/REKR_MOBIS-597))를 통해 본사에 문의하였으나, 아직 회신을 받지 못한 상태입니다.
|
||
|
||
|
||
왜 발생하지?
|
||
클럭과 데이터가 2개 없음. 소실되는 것 같음. 노이즈 때문일까? 필터를 다는 것은 가능한가?
|
||
인터럽트는 왜 발생하는 거지?
|
||
|
||
>레지스터 분석
|
||
>회피방법은? 리셋하면 뭐가 리셋이 되지?
|
||
> 로드 줄여서 Test해보기
|
||
> 다른 I2C 디바이스와 통신 해보기
|
||
|
||
|
||
뭘했는지 남겨두기
|
||
|
||
|
||
리셋 함수로 초기화 해도 왜 레지스터가 리셋 되지 않지?
|
||
레지스터 리셋 하는 방법이 없을 까?
|
||
디버깅
|
||
|
||
모비스 스턱나는 바이너리 넣어서 확인해보기.
|
||
왜 PMIC와 I2C 통신하면 뻣어 버리냐?
|
||
PMIC I2C 사양확인해보기
|
||
|
||
|
||
뭔가 PMIC에서 잡고 있는듯
|
||
|
||
1.2 SM 6.10 Unintended Interrupt Check 항목 테스트 중 인터럽트 값이 항상 1023으로 읽혀 르네사스 코리아에 문의 요청(7/11)
|
||
- https://onefieldjira.renesas.com/browse/REKR_MOBIS-694
|
||
본 건은 금일 Mobis 인도 팀과의 PMIC 정례회에서도 언급이 있었습니다. 본사의 Support가 필요하다고 판단되어 Jira등록을 Mobis 인도팀에 요청 했습니다.
|
||
> Mobis 인도팀에서 자체적으로 Close하였습니다.
|
||
|
||
|
||
2.I2C Frequency, Duty 조절 위한 설정 가이드 요청(7/10)
|
||
○365kHz, 25% → 400kHz, 50%로 수정 필요
|
||
저희가 보유한 Mobis 보드로 테스트한 결과 Duty가 50%로 정상적으로 확인되어, 의심되는 부분에 대해 추가로 점검해 달라고 작일 Mobis에 요청하였습니다.
|
||
> Mobis에서 재확인한 결과 문제 없음.
|
||
|
||
★3.Global timestamp 패치 요청(7/14)
|
||
저희는 A-Core(Linux)용 Timestamp 샘플 코드를 보유하고 있으며, 이를 모비스에 전달하였습니다. (https://onefieldjira.renesas.com/browse/REKR_MOBIS-686)
|
||
해당 샘플 코드는 GHS RH850 컴파일러(ICUMX IPL)와 GCC ARM 10.3 컴파일러(CR5 코어와 CA 코어 모두)에서 빌드가 되는 것을 확인 하였습니다.
|
||
이에 모비스가 Autosar R-Core 환경에 맞게 해당 코드를 수정하여 빌드해야 합니다.
|
||
> Mobis에서 수정중
|
||
|
||
★4. Safety Mechanism
|
||
SAN 참고해서 예를 들어 Unintended Interrupt Check 일때 어떻게 설정하고 어떤 인터럽트가 뜨는지 소프트웨어어적으로 분석이 필요.
|
||
|
||
PG 요청 사항
|
||
고객은 CR52-Core에서 일부 Safety Mechanism을 구현하려고한다.
|
||
고객인 참고할 수 있는 가이드가 필요하다. CR52-Core Safety Sample Code 및 관련 자료를 요청한다.
|
||
|
||
AI
|
||
Post Build Time이 어떤 의미인지 확인
|
||
ECM(에러 제어 모듈)과 연동하여 ‘6.10 Unintended Interrupt Check’를 수행할 경우,
|
||
필요한 설정 사항과 인터럽트 등의 알림 방식이 어떻게 되는지 확인
|
||
|
||
sob san 6에 았는 건 어떤
|
||
api에서 어떤 리턴을 받는지. 확인
|
||
|
||
소프트웨어 인덱싱. 소프트웨 전달 패스는 어떻게 되는지.
|
||
ecm 컨트롤 하는 것 소프트위어 아키텍처 확인
|
||
차주까지.
|
||
|
||
|
||
Summary
|
||
1.기능안전 PMIC 관련
|
||
1.1 I2C 통신 Error건
|
||
현재 PG로부터 Jira 문의에 대한 회신을 기다리고 있으며, 조명제 연구원과 함께 해당 문제를 최우선으로 디버깅하고 있습니다.
|
||
|
||
1.2 SM 6.10 Unintended Interrupt Check 항목 테스트 중 인터럽트 값이 항상 1023 읽힘건
|
||
Mobis 인도 팀이 Jira 등록을 완료하였으나, 이후 해당 이슈를 Mobis 자체적으로 종료(Close) 처리하였습니다.
|
||
|
||
2.I2C Frequency, Duty 조절 위한 설정 가이드 요청 건
|
||
(365kHz, 25% → 400kHz, 50%로 수정 필요)
|
||
저희가 보유한 Mobis 보드로 테스트한 결과, 듀티(Duty)가 50%로 정상적으로 확인되어, 의심되는 부분에 대해 추가 점검을 요청하였으며 현재 Mobis에서 확인 중입니다.
|
||
Mobis가 Duty 50%로 동작하는 것을 확인함(Close)
|
||
|
||
3.Global timestamp 패치 요청(7/14)
|
||
A-Core(Linux)용 타임스탬프 샘플 코드를 Mobis에 전달하였으며, 현재 Mobis에서 R-Core 환경에 맞게 해당 코드를 수정 중입니다.
|
||
|
||
|
||
★ 아래 내용은 Update하지 않아도 됨.
|
||
수요일 13시 이정원 실장님, PRK3 TMM material
|
||
MCU Issue 발표 내용.
|
||
저희가 대응하는 우선 순위별로 CR-Core Issue를 리스트 업한 것입니다.
|
||
1. CR-Core가 PMIC와 I2C 통신하는데 랜덤하게 I2C 완료 인터럽트가 발생하지 않는 건 입니다.
|
||
|
||
앞으로 어떤 확인을 할껀지
|
||
문제 발생했을 때와 하지 않았을때의 Register 덤프 비교 분석
|
||
I2C H/W 사양확인
|
||
|
||
|
||
어떤 Test를 했는지
|
||
1. I2C 채널 5의 인터럽트 우선순위는 최고 수준으로 설정되었지만, 문제가 계속 발생하고 있습니다.
|
||
2. CddIic_Ch5Write 및 CddIic_Ch5Read 함수의 반환값은 모두 RTE_E_OK로, 함수 호출 자체에는 문제가 없음을 나타냅니다.
|
||
3. 연결된 I2C 디바이스는 PMIC IC와 VDD 전원 제어 IC이며, VDD 전원 제어 IC 쪽의 I2C 라인을 오픈해 둔 상태에서도 문제가 여전히 발생합니다.
|
||
4. I2C 통신 속도를 400 kbps에서 200 kbps로 낮추었지만, 문제는 해결되지 않았습니다.
|
||
|
||
2. Global timestamp건
|
||
목적: AP-Core에도 구현되어 있습니다만, CR52 코어와 A76 코어간 Global timestamp 를 공유하고자 CR-Core에도 사용할 수 있게 패치를 요청한 건.
|
||
확인 결과 timestamp는 AP-Core쪽만 Sample Code가 있었고 CR-Core에서 사용할 수 있게끔 별도의 패치는 없었습니다.
|
||
하지만 Linux환경에서 CR-Core와 CA-Core 모두 문제 없이 컴파일 되는 Sample Code를 전달 했으며,
|
||
오토사BSW개발팀 조명제 연구원이 윈도우 Autosar 환경에서 컴파일 되게끔 수정하고 있습니다.
|
||
|
||
> 본사 커맨트
|
||
> 이 소스 코드는 ICUMX IPL용 GHS RH850 컴파일러와 CR52 코어 및 CA 코어용 GCC ARM 10.3 컴파일러를 모두 사용하여 컴파일했습니다.
|
||
> 제 작업 환경은 Linux이지만 Windows 환경에서 컴파일해도 아무런 문제가 없습니다.
|
||
|
||
3. 세이프티 메카니즘에서 인터럽트 값이 항상 동일하게 발행하는 건
|
||
4. I2C Duty 설정건
|
||
|
||
|
||
|
||
|
||
★ 준비물
|
||
멀티탭
|
||
살리, Power
|
||
Tr32
|
||
보드.
|
||
비글
|
||
|
||
연구원님 없는동안 누구한테 방문등록 신청할지 확인
|
||
0.웹미팅 : 불가
|
||
1. 빌드 방법 -> BWW_RTE에서 우클릭 -> Open Terminal -> .\Build.bat RS4 NONE NONE
|
||
Out폴더에 파일들이 생성됨
|
||
- 와치독 코드 확인 -> 인도팀으로 부터 받아야함.
|
||
- I2C 스턱 코드 이것만 분석 가능.
|
||
|
||
CtCdSDL.c
|
||
|
||
2. Binary Write 방법 -> Terraterm TTL 실행
|
||
3. Tr32 연결방법 -> C드라이브에 T32_V4H_202406 ->Bin -> Win64->t32start.exe
|
||
4. 벡터 Tool은 USB 라이센스 동글 필요.
|
||
|
||
재현확인후
|
||
|
||
베트남 요청 사항
|
||
1. work-around
|
||
- 리턴값 OK인지 확인후 진행
|
||
|
||
>https://teams.microsoft.com/l/meetingrecap?driveId=b%211Ktorb39oEaU7AGlmVVBuSfS_Kik4l9IpyahL7k8C9l96WPy5vpnTqNa_XPG_ZSR&driveItemId=01ELYJII2JVXYZCIVS7BAKX3H4T5WDBCJQ&sitePath=https%3A%2F%2Frenesasgroup-my.sharepoint.com%2F%3Av%3A%2Fg%2Fpersonal%2Fwoody_jang_xc_renesas_com%2FEUmt8ZEisvhAq-z8n2wwiTABcW6An7HFaI4r1Ro3RilWeg&fileUrl=https%3A%2F%2Frenesasgroup-my.sharepoint.com%2Fpersonal%2Fwoody_jang_xc_renesas_com%2FDocuments%2FRecordings%2FLuis%2520Kim%2520%25EB%258B%2598%25EA%25B3%25BC%2520%25ED%2586%25B5%25ED%2599%2594-20250814_181815-%25EB%25AA%25A8%25EC%259E%2584%2520%25EB%2585%25B9%25EC%259D%258C%25EB%2585%25B9%25ED%2599%2594.mp4%3Fweb%3D1&threadId=19%3A3a29c45c-eca8-4c42-b896-b55901017294_d53fa3a3-f232-4b71-8005-843b42ba969f%40unq.gbl.spaces&callId=e63b625a-db6e-4147-8fb9-575d11409401&threadType=OneOnOneChat&meetingType=Unknown&subType=RecapSharingLink_RecapCore
|
||
DDR 메모리 설정
|
||
|
||
고객은 MPU 설정에 힘들어 하고 있다.
|
||
혹시 우리는 MPU 설정하는 예제가 있는가?
|
||
|
||
The customer is having trouble setting up the MPU(memory protection unit).
|
||
Do you have any examples of setting up the MPU?
|
||
|
||
|
||
|
||
재현 상태확인
|
||
복구 할 수 있는 방법
|
||
|
||
베트남 코드 Test
|
||
인터럽트 설정이 잘 되었는지 확인
|
||
|
||
|
||
Write 2번 Test
|
||
|
||
|
||
|
||
|
||
MCAL 쪽에서 초기화 하는 것이 있는지 확인
|
||
|
||
|
||
|
||
1. 레벨 -> 복귀가 됨.
|
||
2. 초기화값 -> 모듈이 리셋 되는 것 같다.
|
||
3. 인터럽트 디세이블 -> OS가 멈춤 걸리는 듯.
|
||
정리해서 메일로 보고.
|
||
|
||
|
||
RV-VRAM
|
||
MPU설정 메모리 관리 방법
|
||
|
||
RCar 메모리구조(RAM(DRAM, SRAM)) 및 설정방법
|
||
|
||
CR-Core's Startup 매소드
|
||
|
||
멀티코어사용하는데 있어, CR-Core Boot(Core0, Core1, Core2) & 메모리 설정방법을 교육에 포함해 줄수 있겠어?
|
||
|
||
|
||
안녕하세요. 장승혁입니다.
|
||
|
||
I2C Stuck건으로 금일 디버깅한 내용을 회신 드립니다.
|
||
Test 환경 : CR-Core(Core0, Core2)와 CA-Core가 동작함
|
||
사용 Binary : 2025-07-22메일의 20250703IPL.zip, ADASPRK3.srec(NotePC에 셋업된 CR-Core S/W)
|
||
|
||
Case 1. 엣지 방식에서 레벨방식으로 변경설정 확인. -> 증상이 줄어드는 것을 확인함
|
||
Case 2. OS-Stuck -> 분석 불가
|
||
Case 3. 외부요인으로 I2C Module이 초기화가됨 -> 분석 불가
|
||
모비스에서 Core0으로 기능을 이관 완료후 추이 확인
|
||
|
||
모비스에서 싱글코어로 I2C Stuck은 발생하지 않는다고 인도팀도 확인했고 코리아팀도 확인했다.
|
||
|
||
Multi 코어 설정이 잘안되고 있다.
|
||
차후 확인 사항은 아래 부분
|
||
RTVAM 얼라인 256?
|
||
|
||
32인가 8 인가
|
||
Sca.파일 분석
|
||
|
||
|
||
Gen4_R-Car
|
||
|
||
빈
|
||
멀티코어 메모리 쪽 검토를 해달라.
|
||
|
||
베트남에 요처한 사항
|
||
V4H internal memory structure ( ex: RT-VRAM )
|
||
RT-VRAM use case for multi CR-core usage
|
||
How set up MPU for multi CR-core use case
|
||
Spinlock for multi CR-core use case( ex: SPI/GPT/watchdog )
|
||
When using system RAM as share memory(non-cached), how guarantee access order
|
||
|
||
고객의 필요한 내용.
|
||
(1) booting issue with multi CR core usage case
|
||
(2) I2C stuck issue with multi CR core use case
|
||
|
||
멀티코어 설정은 어떻게 하는가
|
||
각 코어 메모리 설정은?
|
||
1. Shared Memory 설정?
|
||
2. 각 Core별로 사용하는 메모리를 설정
|
||
|
||
2번에 normal non-cacheable 일 듯 한데.
|
||
|
||
|
||
RT-VRAM/DRAM/RT-SRAM?
|
||
|
||
|
||
5차 보드 받을 수 있는지 김정수 책임님.에게 문의
|
||
|
||
20250827 Multi Core Boot Fail 환경
|
||
MCU (CR0~2) 멀티코어 사용에 있어, 각 코어의 MPU (Memory Protection Unit)설정에 대해 문의드립니다.
|
||
CR0~2의 코어들은 AUTOSAR 기반으로 동작하며, 이미지는 하나입니다.
|
||
또한 코드/데이터는 모두 DDR 메모리에 로드 되어 동작합니다.
|
||
각 코어의 AUTOSAR 간 SHARED MEMORY 는 System RAM 을 이용합니다.
|
||
현재 부팅 시 prefect abort 등 exception이 발생합니다.
|
||
이는 mpu 설정이 잘 설정되지 않아서 일 듯 합니다.
|
||
Arm Cortex R52 코어의 동작에 맞는 설정이 필요해 보입니다.
|
||
특히 DDR 메모리는 RT-VRAM1 의 Extended 모드로 접근합니다.
|
||
이중 캐시로 보여지는데 이의 경우, 어떻게 MPU를 설정하면 좋을 지 문의드립니다.
|
||
|
||
CR0~2의 코어들은 AUTOSAR 기반으로 동작하며, 이미지는 하나
|
||
코드/데이터는 모두 DDR 메모리(RT-VRAM1 의 Extended 모드)에 로드
|
||
System RAM을 SHARED MEMORY로 사용
|
||
현재 부팅 시 prefect abort 등 exception이 발생
|
||
MPU 설정이 Single Core용 혹은 Multi Core용 설정이 있을지 모르겠으나 MPU설정이 잘 되니 않아 발생하는 문제로 추정
|
||
|
||
|
||
MCU 파트 AP 파트 각각 개발을 시작
|
||
MCU
|
||
C0 -> 사용. C2 점프뛰면서 로 사용.
|
||
C1 -> 조용일 책임이 사용한다고 함.
|
||
C2 -> C0 이후 사용.
|
||
|
||
C0 -> 정상
|
||
C1 -> Abort, 예외로 빠짐. 그리고 갠이 멈춤
|
||
C2-> Abort, 예외로 빠짐. 그리고 갠이 멈춤
|
||
|
||
C0 only, C1, C2의 컴포넌트를 C0으로 넣음(3%로 멈춤). -> C0과 C2를 사용하는 것으로 설정할 것임.
|
||
SC1까지는 되었는데, SC3까지는 못감.
|
||
ATCM, BTCM, CTCM.
|
||
AP를 키면 가중됨
|
||
I캐쉬, D캐쉬.
|
||
|
||
AP
|
||
T사 이력은. R5코어 strong order를 사용함.(메모리 순서를 변경함.)
|
||
백터는 각각 이미지를 올려서 사용하는 것을 권장하지 않음.
|
||
쉐어드 메모리는 필요함.
|
||
|
||
MPU 설정
|
||
IO 내부 레지스터 <- MCAL에 start, asm
|
||
1. 스타트 엔드 얼라인이 맞는지 확인이 필요.
|
||
|
||
2. 코어 하나만 설정하면, 캐쉬는 자동 할당? 코어 3개이면 코어하나당 사용하는 캐쉬가 줄어드나?
|
||
RT-VRAM1 램이 캐쉬로 되면서 RT-VRAM1 28M로 확장. 1M는 캐쉬로 사용. 이중 캐쉬가 맞나?
|
||
RT-VRAM설정이 맞는가?
|
||
|
||
EVB로 싱글OK, NG, 멀티NG 인 소스 코드 환경을 받기.
|
||
|
||
|
||
2.ICMUX 로드에서 MPU 설정을 하고 있음. Boot 시컨스 확인이 필요.
|
||
0x80000000 MPU off 영역인데, 여기서 MPU 설정을 사전에 해야 하지 않을 까?
|
||
|
||
I2C 스턱.
|
||
5차 보드추가 요청.
|
||
|
||
|
||
1. 부팅시컨스,
|
||
원래 가이드는?
|
||
오토사는 어느 타이밍에 점프?
|
||
MPU 설정은 어느 타이밍에?
|
||
|
||
코드 오픈.
|
||
EVB에서 Test후 확인후 멈추는 것을 확인하고 코드 Open
|
||
|
||
|
||
20250909
|
||
Boot 순서 확인
|
||
Core-1(IPL, Systemram) -> Core0(DDR) -> Core1(DDR)-> Core2(DDR)
|
||
I-Cash하고 DDR 메모리하고 내용이 다름. I-Cash의 내용이 없음.
|
||
|
||
잔여 이슈: CR1/CR2에서 간헐적으로 code jump area 이슈가 있으며
|
||
해당 이슈는 500ms 이하의 on/off 테스트에서 발생하여, 재현 환경은 제공 받은 상황입니다.
|
||
|
||
20250911: 결국 DRAM에 동시 접근 하면 가지고 오는 코어도 있고 못 가지고 오는 코어도 있다. 이것을 해결해야 할 문제다.
|
||
고객이 금일까지 문제를 분석한 결과, 두 개의 코어(Core1, Core2)가 동시에 DDR 내 동일 영역에 접근할 경우, 특정 코어(Core1 또는 Core2)가 DDR에 있는 내용을 읽지 못해 Error가 발생하는 것으로 판단되었습니다.
|
||
|
||
Core0, Core1, Core2가 같은 클러스터 인가?
|
||
MPU설정 인어 쉐어러블 아웃트 쉐어러블?
|
||
어떤 설정을 해야하는가?
|
||
|
||
Hello 빈
|
||
말씀하신데로. 지라 티켓을 생성하겠다.
|
||
그리고 두 가지 간단한 질문을 하겠다.
|
||
1. AP 코어는 클러스터로 구성되어 있는 것을 H/W Manual로 확인했는데, CR 코어는 어떻냐? 클러스터로 구성되어 있는가?
|
||
2. AXI 버스를 통해 DDR에 접근하는데 코어 1과 코어2가 동시에 AXI 버스에 접근해서 문제가 발생하는게 아니냐는 고객의 의견이 있다.
|
||
CR코어는 AXI 버스는 동시에 사용할 수 있는가?
|
||
|
||
20250912:
|
||
Multicore(CR-Core0, CR-Core1, CR-Core2) 동작을 브링업하고 있는 상에서
|
||
코어3개를 웨이크업하고 OS가 초기화 할때, 각 코어가 잘 웨이크 업 했는지 코어들이 순차적으로 상호 인터럽트를 주고 받습니다.
|
||
이때 인터럽트가 겹쳐서 발생을 하면 인터럽트 처리 하는 코드를 동시에 접근 하게 되는데
|
||
어떤 코어는 인터럽트 처리 하는 코드에 접근을 해서 문제 없이 동작을 하는데 반해,
|
||
어떤 코어는 접근을 못해서 에러가 발생하는 문제 입니다
|
||
.
|
||
결국 OS 구동시에 각 코어들이 DDR Memory에 동시 접근했을 경우 발생하는 문제.
|
||
각 코어어들이 순차적으로 상호 인터럽트 주고 받는 부분에 있어, 인터럽트가 겹쳐서 발생하지 않도록 딜레이를 넣음.
|
||
고객의 요청사항, 인터럽트가 동시에 발생하고 동시에 실행될 경우 회피할 수 있는 방법.
|
||
DDR Memory에 동시 접근했을 경우 발생하는 문제를 회피할 수 있는 방법.
|
||
|
||
|
||
1마이크로 세컨드 까지 시간이 같음.
|
||
|
||
|
||
|
||
|
||
대안으로 watchdog이 활성화되면 booting failure 시에 자동 rebooting되어 문제가 없다는 의견이었습니다.
|
||
ATCM 적용 후, 추가 확인이 필요할것으로 예상됩니다.
|
||
HS 메일 자료 분석
|
||
|
||
|
||
현상확인,
|
||
T32로 디버깅
|
||
점퍼 날려서 전원하고 같이 보기
|
||
|
||
Jira-724: CRC 확인 되면 Close해 달라.
|
||
Jira-725: I2c 점퍼 달아서 폴트레지스터 읽어서, Jira에 답변을 하겠다.
|
||
Jira-726: 와치독 후 정지시, SoC 리셋 시그널은 발생하지만 리셋이 안됨. 확인하고 Jira에 답변을 남기겠다.
|
||
|
||
724번 조연구원한테 상황 확인.
|
||
725번 Woody 디버깅
|
||
★Address 0x117(TIMEOUT_SOCACTIVA_ST) : 125ms -> 250ms로 변경]
|
||
0x117 리드해서 값을 확인하고 5:6:7 bit가 1:1:1 (0x07)이 250ms로 Write한다음에 다시 리드해서 값을 확인
|
||
read 0xC3(1100_0011) -> write 0xE3
|
||
|
||
파형으로 확인 불가
|
||
ATOSAR 부팅 170ms가 필요함.
|
||
|
||
★와치독 스탑(디버거로 스탑)하고 리스타트 했을 때 정상적으로 동작하는지 확인
|
||
|
||
수요일 오전 CR 코어 죽는 것도 확인
|
||
수요일 오후 모비스 방문
|
||
|
||
|