기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

안녕하세요.


이것 저것 다 해보았는데 문제가 끊이 질 않네요.. ㅜㅜ;;;


U-BOOT의 arm_boot 함수에서 특정 기능을 하는 FW(main_go() 함수)를 호출하는 부분을 Porting 했는데요.


BSS 영역의 특정 Global 변수를 접근하면 Data Abort가 발생합니다.


ARMCC로 컴파일 되던 소스를 GCC로 변환 시키는 작업이라 굳이 U-BOOT을 사용하게 되었네요.


작업은 s3c6410 보드로 하였습니다.

Floating Point(64Bit 연산)을 위해서 -mabi=apcs-gnu 를 aapcs로 변환 시키고, 관련 library를 추가 해 주었습니다.

그리고, U-BOOT RAM Address관련 사항을 base 0x5000 0000 + 0x07e0 0000을 + 0x0010 0000으로 변경 해주었습니다.

Nor 부팅을 이용해서 DNW로 램영역 0x5010 0000에 다운로드 시켜서 특정 BSS영역의 Global변수를 호출 할 때까지 정상 동작을 합니다.

 

처음에는 4byte align이 안 맞아서 생기는 문제 인 줄 알았는데, structure type과 union type 등 __packed을 사용해서 맞춰 준 것 같은데, 다른 Global 변수를 호출 할 때 Data Abort가 발생하더군요. (structure type 변수 pass 후 u8 배열 변수에서 Data Abort, 변수 배열 사이즈(기존 4Mbyte) 조절하면 다른 곳에서 발생... ㅜㅜ;;;)

memory map을 봐도 문제 되는 부분은 4byte align이 잘 맞고 있습니다.

(좀 이상한 부분이 Data Abort 발생 지점의 상위 단의 변수인 

0x0000 000c g_time

0x0000 000d g_day

이런 식으로 u8 데이타가 존재하는 부분이 있습니다.

하지만 이 부분 접근 시에는 별다른 문제가 없네요.

)


Bootloader라서 Ram의 초기화가 안될 수도 있어서 보니 128MByte 영역을 모두 초기화 해주는 것 같습니다.

실제로 Global 변수 사이즈를 조절해서 봐도 특정 address를 어느 때는 접근 가능하고 어느 때는 Data Abort가 뜹니다.

그리고, link Script 부분도 이것 저것 수정해 봤는데 역시 변화는 없더군요.


FW 내부에서 GPIO 및 기타 Kernel에서 하는 초기화 루틴이 있는데 clock 변경 등... 

큰 문제는 없는데 뭔가 불안하네요.


이렇게 Global 변수를 접근 시에 Data Abort가 발생 할 경우, Check해봐야 하는 부분이 뭐가 있을 까요??

U-BOOT의 특성을 타는 건지 모르겠네요... 


약간의 힌트라도 답변 부탁드립니다. ㅜㅜ


은민아빠

2014.11.20 19:44:35
*.245.242.234

https://github.com/theopolis/u-boot-sboot/blob/master/doc/README.arm-unaligned-accesses

uboot 관련문서들을 참조해 보시면 도움이 되지 않을까 합니다.

정확히 어떤 문제로 data abort가 발생되는지는 저도 잘 모르겠네요.. 추측만 할뿐...ㅠㅠ

유희재

2014.11.20 23:48:43
*.103.2.150

-marm 옵션 확인해 보세요 썸모드로 컴파일 되었다면 그럴 수 있습니다.

List of Articles
번호 제목 글쓴이 날짜 조회 수
6148 [directFB] 폰트 아웃라인 관련... [2] 프리챌 2014-12-04 891
6147 S5PC110 wince 관련 질문 [4] 고도리 2014-12-01 702
6146 i2c-1 포트로 두개의 슬레이브를 제어하려고합니다 질문좀요 [2] 문철민 2014-11-28 664
6145 full hd 동영상 재생 가능한 리눅스 기반 임베디드 보드가 어떤게 ... [2] 새삶 2014-11-26 866
» U-BOOT에 FW 올린 후 Data Abort 문제 질문드려요. [2] 신의발자국 2014-11-20 921
6143 디바이스 드라이버를 배포 하려면 소스상태로만 배포해야 하나요? [1] pedor11 2014-11-14 907
6142 NAND partition과 u-boot [1] 김진희 2014-11-14 911
6141 커널 uvc 드라이버 설정 및 usb캠 드라이버 질문입니다. [1] ice179 2014-11-14 1182
6140 Ramdisk와 initrd [1] 테크 2014-11-13 955
6139 특정 네트워크 인터페이스가 무선인지 유선인지 알수있을까요? [6] xoduddk123 2014-11-11 1185
6138 wifi direct(wifi p2p)에서 채널별 감도 측정 방법 있을까요? [3] 톳끼아빠 2014-11-08 1472
6137 컴파일을 할때마다 Image랑 zImage용량이 바뀌는건 왜 그런것인가요? file [2] xoduddk123 2014-11-07 1233
6136 양산시에 Flash 메모리를 구울 때 [1] 어떤이의꿈 2014-11-05 1284
6135 전원에서 BEAD관련 질문 [1] SpecialCase 2014-11-05 1133
6134 Android touch Event?? [1] Supsupi 2014-11-03 1151
6133 sclk_uart0 ~ 4까지의 clock들의 주파수는 어떻게 알 수 있을까여? [2] 혜민아빠 2014-10-31 1156
6132 요즘… ARM9, ARM11로 개발할 경우는 어떻게 해야 합니까? [3] 오르다 2014-10-31 1383
6131 arm-linux-gnueabi/bin/ld 에러 관련.... [1] blue0sky 2014-10-31 1243
6130 android에서 serial APP을 개발하기 위해서 어떻게 하면 되는가요... [3] 김경식 2014-10-24 1432
6129 tvp5150 [4] 삐까삐까룸 2014-10-24 1254

사용자 로그인