CP15 용어
'임베디드' 카테고리의 다른 글
SiP vs SoC (0) | 2021.04.14 |
---|---|
ARM 프로세스 모드 - 시스템 모드 - (0) | 2011.06.11 |
cache thrashing (0) | 2011.04.30 |
CP15 용어
SiP vs SoC (0) | 2021.04.14 |
---|---|
ARM 프로세스 모드 - 시스템 모드 - (0) | 2011.06.11 |
cache thrashing (0) | 2011.04.30 |
Linux: umask (0) | 2012.01.03 |
---|---|
JBD error message "barrier-based sync failed" (0) | 2011.08.17 |
EXT4 파일 시스템 굽기 (0) | 2011.08.02 |
[Ubuntu] Ubuntu 에서 make menuconfig 안될때, (0) | 2011.04.22 |
/opt, 리눅스 패키지 설치 (0) | 2011.04.20 |
네트워크 속의 유령, 케빈 미트닉 (0) | 2013.12.03 |
---|---|
GoF 디자인 패턴! 이렇게 활용한다. (0) | 2013.03.24 |
tar: time stamp s in the future (0) | 2011.08.26 |
---|---|
dd (주로 빈 파일 만들기, loopback 마운팅 할 때 쓰임) (0) | 2011.08.02 |
엔디안 처리하는 함수 (0) | 2011.06.06 |
busybox cross-compile (0) | 2011.06.01 |
mount 옵션비교 atime, noatime, relatime (0) | 2011.06.01 |
프로세서 익셉션이 일어 났을때, 현재 PC값은 LR에 복사가 되고, CPSR은 SPSR로 복사가 됩니다. 그 후에 CPSR은 어떤 익셉션이냐에 따라서 변할 것이고, PC도 익셉션 핸들러를 돌리기 위해 익셉션에 맞게 정의된 주소로 바뀝니다.
그후, ARM의 서브루틴 콜(BL)은 서브루틴으로 뛰기 전에 r14에 리턴할 주소를, PC값을 바꾸기 전에 복사해놓고, 서브루틴에서 돌아올때는 PC에 r14값을 넘겨줍니다. 그러므로 지금 일어난 익셉션을 핸들하고 있는 현 ARM 모드는 같은 종류의 익셉션이 일어낳지 않도록 해야 합니다.(안 그러면 서브루틴 리턴 주소가 익셉션 리턴 주소로 덮어씌어질테니까요)
ARMv4이전까지는 익셉션 코드에서 서브루틴콜을 피하거나 권한모드에서 유저모드로 들어가서 처리했는데, 전자는 너무 제한적이고, 후자는 태스크가 필요한 권한을 가지지 못할 수도 있다는 문제가 있습니다. 그래서 ARM v4 이후에서는 시스템 모드라는 걸 지원해서 이러한 문제를 해결했습니다. 시스템 모드는, 유저모드에 있는 레지스터를 공유할 수 있는 권한모드이기 때문입니다.
비슷한 얘기지만 인터럽트 핸들러를 재진입시에도 시스템 모드를 사용해서 문제를 해결 할 수 있습니다. ARV v4이전까지는 Supervisor 모드로 들어가야 했습니다.
SiP vs SoC (0) | 2021.04.14 |
---|---|
ARM cp15 register에 관련된 용어들 (0) | 2011.06.28 |
cache thrashing (0) | 2011.04.30 |
dd (주로 빈 파일 만들기, loopback 마운팅 할 때 쓰임) (0) | 2011.08.02 |
---|---|
tee 커맨드 (0) | 2011.06.19 |
busybox cross-compile (0) | 2011.06.01 |
mount 옵션비교 atime, noatime, relatime (0) | 2011.06.01 |
xargs 사용법 (0) | 2011.04.24 |
안드로이드 프레임워크단이고, ant 아닌 android용 make라면 다음과 같은 방법으로 가능하다.
자바 단에서
로 정의하고,
분기컴파일이 필요한 부분에 가서,
if (TARGET_PRODUCT) {
// 코드 내용, 이 부분은 false로 남아있을 경우, 컴파일 할때 사라짐.
}
그리고 해당 make 파일에서 해당 product에 따라 간단히 awk 나 sed로 저기 fasle 부분만 바꿔주는 경우로 하면 된다. 자바도 컴파일할때 최적화를 하기에 저렇게 절대로 실행이 안되는 부분(상기 TARGET_PRODUCT이 적용 안되는 경우) 컴파일 할 때 생략한다.
/* 커맨트 추가
원래는 안드로이드에서 쓰는 property_get() (system/core/include/cutils/properties.h 에 정의)를 product에 맞는 프로퍼티를 설정해 놓고 거기에 맞게 쓸까 했는데, 이러면 전처리기라기보단 그냥 분기실행 같기도 하고, 프로퍼티를 저런 식으로 써도 되는지 몰라서 안했습니다.
이 방법에 문제라면 product종류가 2개 이상이면 조금 복잡해지는거 같습니다. 안드로이드가 아닌 그냥 자바라면 디펜던시 인젝션 하는 방법으로 하면 간단히 해결 되는 걸로 알고 있습니다.(이 부분은 해당업무가 바뀌면 올리겠습니다 ㅎㅎ)
*/
Bionic libc (2) (0) | 2012.11.08 |
---|---|
Bionic libc (0) | 2012.10.30 |
안드로이드 init.rc (oom_adj값) (0) | 2012.09.27 |
Dalvik Virtual Machine 와 odex (0) | 2012.08.13 |
안드로이드 바인더 ipc (0) | 2011.10.23 |
(static 컴파일)make CONFIG_PREFIX=target_directory ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- CFLAGS=--static LDFLAGS=--static install
dd (주로 빈 파일 만들기, loopback 마운팅 할 때 쓰임) (0) | 2011.08.02 |
---|---|
tee 커맨드 (0) | 2011.06.19 |
엔디안 처리하는 함수 (0) | 2011.06.06 |
mount 옵션비교 atime, noatime, relatime (0) | 2011.06.01 |
xargs 사용법 (0) | 2011.04.24 |
dd (주로 빈 파일 만들기, loopback 마운팅 할 때 쓰임) (0) | 2011.08.02 |
---|---|
tee 커맨드 (0) | 2011.06.19 |
엔디안 처리하는 함수 (0) | 2011.06.06 |
busybox cross-compile (0) | 2011.06.01 |
xargs 사용법 (0) | 2011.04.24 |