목록분류 전체보기 (36)
0xFF
퀄컴 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 기본값을 건드리지 않고 빌드하여 그런 것이 아닐까 싶었다. 평소였으면 이쯤에서 귀찮음에 순정 커널에서 지원되는 다른 모듈을 구매하지 않았을까 싶지만갑자기 생긴 오기에 커널 빌드까지 해서 드라이..
Git을 사용하지 않고 서로 다른 PC에서 작업이 이뤄진 프로젝트가 있었다.사실 처음부터 Git을 사용하지 않았던 것은 아니고,프로젝트를 배포한 이후 사소한 버그가 발견되어 배포한 시스템에서 코드 몇 줄을 고쳤던 것에서 시작했다.간단한 코드여서 나중에 PC에서 수정 후 깃에 동기화할 생각이었지만, 이후 두 가지 문제가 생겼다.첫 번째는 이걸 미루다 까먹었다는 것이고두 번째는 이러한 상황이 나중에도 몇 번 더 반복되었다는 것이다.결국 새 버전 개발을 위해 개발 PC와 배포한 시스템의 코드베이스를 일일이 비교하여 하나로 통합해야 하는 상황이 오고야 말았다. 처음에는 두 프로젝트를 열어 놓고 주요 소스코드 파일별로 diff를 해볼까 생각했지만폴더 단위로 코드를 비교해 주는 툴이 당연히 있으리라 생각하여 위의 ..
보호되어 있는 글입니다.