안녕하세요.


오늘은 리눅스에서 Frimware 이미지를 다운로드 하는 방법에 대하여 알아보겠습니다.


더 많은 내용을 원하시는 분들은 아래를 참고하세요 ^^


linux/Documentation/firmware_class/README


그래도 Firmware가 무엇인지 알아야 겠죠?


간략하게만 알아보게습니다!


리눅스에서 Firmware란 제조사에서 배포되는 특정 하드웨어가 동작되도록 하는 code 이미지 이며, 일반적으로 헤더파일에 static 하게 링크하는 방식으로 사용합니다.


일반적으로 헤더파일에 static하게 링크하는 방식으로 사용하는 것이 무엇인지 잘 모르겟지만. 다음과 같은 이슈가 있습니다.


1. 드라이버의 Firmware는 업그레이드 되어 재배포될수 있습니다.

2. 한번만 사용해도 Firmware는 메모리를 해제하지 못합니다.


다시 말하면 다음과 같이 재해석 할수 있을까요?


1. 드라이버의 Firmware는 언제든 업그레이드 되니 알아서 해라.

2. 한번만 사용해도 내가 사용할 메모리를 Firmware라는 녀석이 잡고있다.


다른 의미인가요? ㅠㅠ 


어떤 이유든! 불편한 점이 있기 때문에 "request_firmware() hotplug interface"가 탄생했습니다! 라고 이야기 해도 될까요?


어쨋든 이런것이 있어서 좋아졌다! 가 답입니다.


그럼 어떻게 사용하냐!?


커널에서는 드라이버 초기화 시에 request_firmware() 함수를 호출하여 Firmware 이미지가 복사될 수 있는 파일을 생성합니다.


이 후 유저영역에서 Firmware를 로드할 때까지 request_firmware()함수는 블록됩니다.


유저영역에서는 request_firmware()가 호출하면서 만들어준 파일에 Firmware 이미지를 복사 합니다. 요렇게요!


echo 1 > /sys/<디바이스경로/loading

cat Firmware 이미지 > /sys/<디바이스경로/loading

echo 0 > /sys/<디바이스경로/loading


눈치 채셨겠지만 "echo 1 > ~~"는 이제 쓸꺼야! 라고 알려주는 것이며, "echo 0 > ~~"는 이제 다 썻어! 라고 알려주는 것입니다.


Firmware가 잘 복사 되셨으면 이제 특정 하드웨어에 맞는 작업을 수행하실 수 있는 환경이 만들어 졌다고 할수 있습니다.^^


Firmware 이미지를 다운로드 하는 것이 중심인 글이였는데, 이것저것 쓰다보디.. 내용이 길어지고 복잡해 졌네요!


읽어주신 분들에게 도움이 되는 글이였으면 좋겠습니다 ^^