목록분류 전체보기 (38)
0xFF
필자가 진행 중인 프로젝트는 캡티브 포털을 이용하여 사용자가 Wi-Fi 네트워크에 접속하자마자 웹 페이지를 띄우고, 여기서 서비스를 제공한다.따라서 Wi-Fi 칩셋인 AR9271을 AP 모드(핫스팟)로 작동하게 해야 한다.이를 위해서는 hostapd가 필요한데, hostapd에는 IP 할당 기능이 없어 dnsmasq등의 DHCP 서버를 함께 사용하여 연결된 station 장치들에게 IP를 할당해 주어야 한다.$ apt install dnsmasq hostapd nginxDebian/Ubuntu 환경에서는 위와 같이 간단하게 설치할 수 있다.여기서 nginx는 captive portal 구현 단계에서 302 리다이렉트를 발생시키기 위해 설치하였다.# ip addr...3: wlxc01c3043146b: ..
젯슨 나노를 엣지 LLM 구동 전용 노드로 구성하고, 이를 메인 노드에서 접근할 수 있도록 하기 위해 이더넷을 사용해 1:1 연결이 가능하도록 해 보자.여기서 DHCP 서버 없이 동등한 네트워크 세그먼트 내에서 두 호스트가 통신하기 위해서는 이더넷 표준에 정의된 링크 로컬 주소라는 기능을 사용할 수 있다.우선 IP를 할당해줄 DHCP 서버가 없으므로 두 호스트에서 네트워크를 직접 구성해야 한다.필자는 IP 할당 명령을 systemd 서비스로 등록하였다.아래는 각각 두 보드에 등록한 service 파일의 내용이다.경로: /etc/systemd/system/set-linklocal.service[Unit]Description=set-linklocalAfter=network.target[Service]Type..
퀄컴 SoC는 QUP(Qualcomm Universal Peripheral)이라는 프로그래밍 가능한 범용 하드웨어 IO 모듈을 여러 개 내장하고 있다.여기서 범용이라는 것은 여러 인터페이스(SPI, I2C, UART 등)를 지원한다는 것이고,프로그래밍 가능하다는 것은 소프트웨어 레벨에서 하나의 QUP 블록이 어떤 인터페이스로 기능할지 변경이 가능하다는 의미이다.Dragon Q6A 보드에 탑재된 QCS6490도 퀄컴 SoC여서 spi를 활성화하려면 칩에 내장된 여러 QUP 모듈 중 하나를 SPI 버스로 작동하도록 설정해야 한다.먼저 Dragon Q6A의 핀아웃을 보고 원하는 위치의 SPI 버스를 하나 고른다.작성자는 6번 SPI를 사용하기로 했다.dtc -I dtb -O dts -o ~/my.dts /bo..
Radxa Q6A의 SoC인 QCS6490에는 Hexagon DSP가 탑재되어 있다.이름은 DSP지만, Dragonwing 같은 칩셋에 내장된 최신 헥사곤 아키텍처에는 하드웨어 차원의 벡터 및 텐서 연산 기능이 추가되어 NPU로도 기능한다고 한다.그렇다면 로컬 LLM 구동도 가능할까 싶어 알아보니 가능하다고 한다!간략히 알아본 바 퀄컴에서 제공하는 Qualcomm AI Engine Direct 라는 SDK(이하 QNN SDK)를 사용하여 타겟 보드에서 사용하고자 하는 onnx 포맷의 모델을 dlc 라는 확장자를 갖는 자체 포맷으로 변환 및 양자화(선택)하여 타겟 디바이스에 맞게 변환하고,이를 QNN SDK에서 제공하는 런타임으로 타겟 디바이스의 NPU에서 구동한다는 흐름이다.하지만 Qualcomm AI ..
퀄컴 칩셋 관련 SDK를 다운로드 받기 위해 QualcommPackageManager를 설치하게 되면 로그인을 해야 한다.오늘 이 로그인 과정에서만 2시간을 허비했는데,이유인 즉 첨부한 사진과 같이 로그인 정보가 불일치하다는 것이었다.물론 이메일과 비번은 몇번이고 재확인하였고, 웹에서 문제 없이 로그인 되는 것을 확인하였기에 이 문제는 아니었다.거두절미하고 핵심만 말하자면, 퀄컴 패키지 매니저에서 로그인 정보가 정확함에도 로그인이 되지 않는다면https://www.qualcomm.com/agreements AgreementsAgreementswww.qualcomm.com위 링크로 접속하여 약관에 동의해야 한다.링크에 접속하면 위와 같이 약관 동의 페이지가 뜨는데,두 약관을 각각 스크롤을 내려 끝까지 읽고..
퀄컴 QCS6490을 탑재한 Radxa사의 Dragon Q6A보드를 들여왔다.개인 프로젝트를 위해 적당한 성능의 SBC를 찾던 중 BCM2712와 RK3588의 상위호환이라는 평이 많아 구매한 것인데제조사에서 제공하는 OS 이미지에 AR9271의 드라이버인 ath9k_htc 모듈이 포함되어 있지 않다는 사실을 알게 되었다.그리고 혹시나 하는 생각에 설치해본 캐노니컬의 QCS6490 전용 우분투 이미지마저 동일하다는 것을 알게 되었다.나름대로 추측을 해 본 결과 퀄컴에서 배포하는 커널 소스 트리의 menuconfig 기본값을 건드리지 않고 빌드하여 그런 것이 아닐까 싶었다. 평소였으면 이쯤에서 귀찮음에 순정 커널에서 지원되는 다른 모듈을 구매하지 않았을까 싶지만갑자기 생긴 오기에 커널 빌드까지 해서 드라이..