베어 메탈 AM1808에 핀 멀티플렉싱을 시도하고 있지만 킥 레지스터를 쓸 수없는 것 같습니까? 또는 더 구체적으로 말하자면, 내가 쓰려고했던 값을 다시 읽을 수없는 것 같습니다. 베어 메탈 암 (AM1808) - 킥 레지스터에서 읽기
mode: 0x13
kick0: 0x0 -> 0x0
kick1: 0x0 -> 0x0
는 일반적으로 나는 내가 관리자 모드에서 오전 있지만 킥 레지스터를 읽을 수없는 건가요 : 출력
#define SYSCFG_BASE ((void*volatile)0x01C14000)
#define SYSCFG_KICK0R (*((unsigned int*volatile)(SYSCFG_BASE + 0x38)))
#define SYSCFG_KICK1R (*((unsigned int*volatile)(SYSCFG_BASE + 0x3C)))
#define KICK0_UNLOCK 0x83E70B13
#define KICK1_UNLOCK 0x95A4F10
#define KICK0_LOCK 0x0
#define KICK1_LOCK 0x0
static void
gpio_init (int diode)
{
int status = 0;
asm volatile (
"mrs %[ps],cpsr" : [ps]"=&r"(status)
);
printf("mode: 0x%x\n", status & 0x1F);
printf("kick0: 0x%x", SYSCFG_KICK0R);
SYSCFG_KICK0R = KICK0_UNLOCK;
printf(" -> 0x%x\n", SYSCFG_KICK0R);
printf("kick1: 0x%x", SYSCFG_KICK1R);
SYSCFG_KICK1R = KICK1_UNLOCK;
printf(" -> 0x%x\n", SYSCFG_KICK1R);
/* pinmux stuff */
SYSCFG_KICK0R = KICK0_LOCK;
SYSCFG_KICK1R = KICK1_LOCK;
}
: 여기
내 코드? 그렇다면 syscfg의 잠금을 올바르게 해제했는지 어떻게 테스트 할 수 있습니까?UPDATE : 그것이 나오는 것에 , I가 갖는 한 문제 핀 다중화 또는 킥 레지스터에 관련되지 않고 대신 I은 정확하게 다중 GPIO 핀을 사용하는 최상위 논리 오류를 가지고 . 혼란을 드려 죄송합니다.
AM1808 TechRef는 10.2.2 Kicker Mecahanism Protection에서 다음과 같이 말합니다. "Kick 레지스터는 실리콘 개정 2 및 이후 버전에서 비활성화됩니다 .SYSCFG 레지스터는 항상 잠금이 해제되고 Kick 레지스터에 쓰기는 기능적 효과가 없습니다. 회전 2 장치? –
@MichaelBurr syscfg의 REVID 레지스터에'0x4E840102'가 들어 있습니다. 그러나이 개정판 2를 참조한다면 매뉴얼에서 아무 것도 찾을 수 없습니까? –
저는 AM335x 매뉴얼을 가지고 있습니다. KICK 레지스터는 쓰기 전용입니다. 매뉴얼에 비슷한 내용이 있는지 확인하십시오. – auselen