2013-07-08 7 views
1

Linux가 부팅되는 동안 LED가 내 임베디드 장치에서 깜박입니다. 기본적으로 LED 깜박임은 Linux가 부팅하는 중임을 나타냅니다. , 나는 초기화/main.c에 정적 구조체 timer_list의 pwr_led_timer에서Linux 커널 - 사용자 공간에서 실행중인 커널 타이머 중지

  1. 글로벌 타이머를 만든 다음 사항 (LED 점멸 타이머)를 수행하고있는 LED를 점멸하려면;

  2. setup_timer 및 mod_timer 함수가 사용 된 start_kernel() 함수에서 init_timers() 함수가 완료 되 자마자 타이머가 시작되었습니다.

  3. 타이머가 발생하면 타이머 핸들러에서 LED가 켜집니다. 타이머가 다시 시작되었습니다.

  4. 커널이 전체 부트 프로세스를 완료하면 LED를 끄고 타이머를 삭제합니다. del_timer_sync (&pwr_led_timer);

질문 : 타이머와 대신 커널에서 중지의 내 응용 프로그램에서 사용자 공간에서 LED의 스위치를 중지하고 싶은 (즉 소수점 숫자 4). 사용자 공간에서 타이머를 실행하는 커널을 중지시키는 표준 방법이 있습니까?

pwr_led_timer는 글로벌 구조체이므로 모든 IOCTL 호출을 사용하여 사용자 공간에서 타이머를 중지 할 수 있습니까? 내 생각은 일부 IOCTL을 수행하고 커널에 액세스 할 수 있습니다. pwr_led_timer가 전역이므로 IOCTL에서 pwr_led_timer를 사용하여 del_timer_sync()를 호출 할 수 있습니다. 그러나 어느 장치를 IOCTL (?)에 열어야하는지 확실하지 않음

죄송합니다, 저는 커널/드라이버 프로그래밍을 처음 사용합니다. 나는 그물을 찾으려고했지만 어떤 단서도 얻을 수 없었다.

누군가 입력 사항이 있으면 알려 주시기 바랍니다. 미리 감사드립니다.

안부, 에머슨

+0

'/ sbin/init'을 변경하여 사용자 공간에서만 깜박이는 것을 고려 했습니까? –

+0

ioctl 용 장치를 만드는 것은 매우 복잡합니다. 대신 sysfs를 사용하는 것이 좋습니다 –

+0

안녕 Zang MingJie, 의견을 주셔서 감사합니다. 앞에서 말했듯이 저는 커널/모듈 프로그래밍에 익숙하지 않습니다. 나는 나의 필요를위한 sysfs 항목을 만드는 방법을 이해하기 위해 google을 할 것이다 (나는 멈출 필요가있는 커널 타이머이다). 링크가 있으면 공유하십시오. Emerson에게 감사드립니다. – user2555646

답변

0

netlink을 시도하는 생각이 있나요? 간단하고 가벼운 사용자 - 커널 (또는 프로세스 - 프로세스) 통신을위한 강력한 방법입니다.

+0

안녕 메이슨 헤멜, – user2555646

관련 문제