Zig × Arduino Uno에서 Lkha 직렬 통신을 확인했어요.

4789 단어 Arduinozigtech
안녕하세요.그동안 감사했습니다.
이 기사는'아두노 유노의 엘천샤 직렬통신을 Zig 언어로 확인했다'는 기사다.

Zig


Zig에 관해서는 이쪽으로 오세요.
https://ziglang.org

기본 소스 코드


이쪽 소스 코드로 확인했어요.
https://github.com/FireFox317/avr-arduino-zig

하드웨어 확인 환경


Arduino UNO

소프트웨어 확인 환경


이쪽 마스터를 사용해서 2021-04-20 버전을 발표했습니다.
https://ziglang.org/download/
호스트 PC는 Mac이기 때문에 [zig-macos-x86 64-0.8.0-dev.1983+e2cc0271.tar.xz]를 다운로드했습니다.

환경 구조


다운로드한 Zig 컴파일러의 압축을 풀고 경로를 추가합니다.
echo "export PATH=/Users/k-abe/zig-macos-x86_64-0.8.0-dev.1983+e2cc02717/zig:\$PATH" >> ~/.bash_profile
읽기 경로.
source ~/.bash_profile
zig의 컴파일러가 경로를 통과했는지 확인합니다.
KojinoMacBook-2:~ k-abe$ zig version
0.8.0-dev.1983+e2cc02717
다운로드한 버전과 같은 버전을 읽을 수 있어 경로를 통과했다.

구축


기본 소스 코드 디렉터리로 이동하고 (build.zig이 있는 층으로 이동) 구축합니다.
KojinoMacBook-2:~ k-abe$ cd /Users/k-abe/Documents/zig_work/avr-arduino-zig/
KojinoMacBook-2:avr-arduino-zig k-abe$ zig build
KojinoMacBook-2:avr-arduino-zig k-abe$ ls
LICENSE		README.md	build.zig	src		zig-cache
zig-cache 디렉터리 아래에서 elf 파일을 출력합니다.
20210420224859.png
파일 명령으로 출력된 파일을 확인합니다.
네.엘프 파일이지?
KojinoMacBook-2:avr-arduino-zig k-abe$ file /Users/k-abe/Documents/zig_work/avr-arduino-zig/zig-cache/bin/avr-arduino-zig
/Users/k-abe/Documents/zig_work/avr-arduino-zig/zig-cache/bin/avr-arduino-zig: ELF 32-bit LSB executable, Atmel AVR 8-bit, version 1 (SYSV), statically linked, with debug_info, not stripped

쓰기


엘프 파일이 있으니 아두노 우노에 써서 동작을 확인해 봐.
USB 케이블로 Arduino UNO와 PC를 연결합니다.
쓰기 작업을 수행하려면 다음 명령을 사용하여 디바이스 이름을 가져오십시오.
KojinoMacBook-2:avr-arduino-zig k-abe$ ls /dev/cu.usb*
/dev/cu.usbmodem141401
쓰기 도구인 avrdude 쓰기를 사용합니다.
KojinoMacBook-2:avr-arduino-zig k-abe$ avrdude -patmega328p -carduino -P/dev/cu.usbmodem141401 -b115200 -D -Uflash:w:/Users/k-abe/Documents/zig_work/avr-arduino-zig/zig-cache/bin/avr-arduino-zig:e

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: reading input file "/Users/k-abe/Documents/zig_work/avr-arduino-zig/zig-cache/bin/avr-arduino-zig"
avrdude: writing flash (1048 bytes):

Writing | ################################################## | 100% 0.18s

avrdude: 1048 bytes of flash written
avrdude: verifying flash memory against /Users/k-abe/Documents/zig_work/avr-arduino-zig/zig-cache/bin/avr-arduino-zig:
avrdude: load data flash data from input file /Users/k-abe/Documents/zig_work/avr-arduino-zig/zig-cache/bin/avr-arduino-zig:
avrdude: input file /Users/k-abe/Documents/zig_work/avr-arduino-zig/zig-cache/bin/avr-arduino-zig contains 1048 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.15s

avrdude: verifying ...
avrdude: 1048 bytes of flash verified

avrdude: safemode: Fuses OK (E:00, H:00, L:00)

avrdude done.  Thank you.
제대로 쓴 것 같으니 동작을 확인해 봐.

동작 확인


기본 소스 코드는 L 기둥과 시퀀스 데이터 전송입니다.
Serial 터미널에서 Arduino에 연결합니다.직렬 터미널은 미니컴(minicom)을 사용합니다.비트레이트는 115200을 지정합니다.
KojinoMacBook-2:avr-arduino-zig k-abe$ minicom -D /dev/cu.usbmodem141401 -b 115200
Arduino에 직렬로 연결할 수 있는 경우 다음 그림이 표시됩니다.
IMG_3428.JPG
시작할 때 Serial 메시지 표시!~부터 ~까지의 ASCII 코드의 직렬 정보 표시, L천화를 확인했습니다.
내용과 소스 코드/src/main을 확인합니다.zig의 처리 내용이 동일하다는 것을 확인했습니다.

감상


찌아두노 UNO에서도 엘천샤 직렬 통신을 확인했다.
최근에 Rust 학습을 시작했고 Rust의 코드를 많이 봤는데 다음 서술은 다르다고 생각합니다.
  • 스토리지 관리
  • Zig의 기본 소스 코드는main 함수 내부에 전역 변수ch를 추가하여 직렬 데이터로 전송합니다.
    Rust에서 글로벌 변수를 unsafe로 묶지 않으면 구축 오류가 발생합니다.
    나는 Zig가 Rust처럼 메모리 관리를 엄격하게 하지 않는다고 생각한다.
    먼저 좋든 나쁘든 간에 Zig는 C언어에 경험이 있는 사람에게 조화롭지 못한 것이 없고 공부할 수 있다고 생각합니다.
    삽입식 개발 현장 프로그래밍 언어의 선택이 증가했고 프로젝트, 제품, 개발 스타일(신개발, 파생개발, 모듈 63)나는 가장 적합한 기술 선정을 진행해야 한다고 생각한다.
    끝까지 읽어주셔서 감사합니다.

    좋은 웹페이지 즐겨찾기