프로젝트 설정

3853 단어 RustArmstmtech

프로젝트 설정


Rust Embedded WG 준비cortex-m-quickstart를 바탕으로 프로젝트 설정
stm32l4xx-hal HAL 등을 제공하는 프로젝트를 기반으로 할 수도 있습니다.

프로젝트 업데이트


contex-m-quickstart의 초기 상태에서 Nucleo-L476RG에 적합하지 않은 부분이 있기 때문에 프로젝트를 업데이트해야 합니다.구체적으로 말하면 다음과 같은 설정을 갱신한다
  • 프로젝트의 초기 설정
  • 스토리지 설정
  • 컴파일러의 설정
  • OpenOCD 설정
  • 프로젝트 초기 설정


    코텍스-m-quickstart를 복제한 상태Cargo.toml에서 구축할 수 있는 상태가 아니기 때문에 업데이트를 진행합니다.
  • 수정 전
  • [package]
    authors = ["{{authors}}"]
    edition = "2018"
    readme = "README.md"
    name = "{{project-name}}"
    version = "0.1.0"
    
    [dependencies]
    cortex-m = "0.6.0"
    cortex-m-rt = "0.6.10"
    cortex-m-semihosting = "0.3.3"
    panic-halt = "0.2.0"
    
    # Uncomment for the panic example.
    # panic-itm = "0.4.1"
    
    # Uncomment for the allocator example.
    # alloc-cortex-m = "0.3.5"
    
    # Uncomment for the device example.
    # Update `memory.x`, set target to `thumbv7em-none-eabihf` in `.cargo/config`,
    # and then use `cargo build --examples device` to build it.
    # [dependencies.stm32f3]
    # features = ["stm32f303", "rt"]
    # version = "0.7.1"
    
    # this lets you use `cargo fix`!
    [[bin]]
    name = "{{project-name}}"
    test = false
    bench = false
    
    [profile.release]
    codegen-units = 1 # better optimizations
    debug = true # symbols are nice and they don't increase the size on Flash
    lto = true # better optimizations
    
    세부 수정 최소 이하
  • {{authors}}의 섹션을 자신의 이름으로 변경
  • {{project-name}}의 섹션을 적절한 프로젝트 이름으로 변경(2곳)
  • 리뷰 출력[dependencies.stm32f3]의 일부분을 목표판에 맞추기
  • stm32l4x-hal
  • 사용
    뒷부분을 기재하다
    [dependencies.stm32l4]
    version = "0.11.0"
    features = ["stm32l4x6", "rt"]
    
    [dependencies.stm32l4xx-hal]
    # path = "../stm32l4xx-hal"
    version = "0.5.0"
    features = ["stm32l4x6", "rt"]
    
    stm32l4x-hal은 Version0입니다.5.0이면 기본적으로 Nucleo-L476RG의 I2C를 사용할 수 없습니다.최신crate를 사용하기 위해서 최신 항목을 복제할 필요가 있습니다.그래서 path가 적힌 곳이 있어요.

    메모리 설정


    Nucleo-L476RG의 데이터 테이블을 확인하고 스토리지 구성을 업데이트합니다.스토리지 구성은 memory.x를 통해 설정됩니다.업데이트된 값은 다음과 같습니다.
    MEMORY
    {
      /* NOTE 1 K = 1 KiBi = 1024 bytes */
      /* TODO Adjust these memory regions to match your device memory layout */
      /* These values correspond to the LM3S6965, one of the few devices QEMU can emulate */
      FLASH : ORIGIN = 0x08000000, LENGTH = 1024K
      RAM : ORIGIN = 0x20000000, LENGTH = 96K
    }
    

    컴파일러 설정


    Nucleo-L476RG용 바이너리를 만들기 위해 컴파일러를 설정합니다.cortex-m-quickstart/.cargo/config에 설정을 기재합니다.
    관련 부분을 기재하다.
    Nucleo-L476RG용 QUEM에는 적합한 것이 없기 때문에 여기에 기재하지 않습니다.GNU ARM Eclipse QEMU의 STM32F411 RE를 타겟으로 할 때 메모리가 가장 가깝다.
    [target.'cfg(all(target_arch = "arm", target_os = "none"))']
    # デフォルトでOpenOCDでデバッグする
    runner = "gdb-multiarch -q -x openocd.gdb"
    
    [build]
    target = "thumbv7em-none-eabi"   # Cortex-M4 and Cortex-M7 (no FPU)
    

    OpenOCD 설정


    타겟 보드를 기반으로 OpenOCD 설정 파일 업데이트openocd.gdb이번에는 WSL2+Docker를 사용하여 환경을 구축합니다.WSL2는 현재 USB를 설치할 수 없기 때문에 OpenOCD는 PowerShell 등 윈도 측의 설정을 고려하여 업데이트할 필요가 없음openocd.cfg이번에 Docker에서 운행하기 위해서는 컨테이너에서 호스트 쪽에서 시작하는 OPEN OCD에 연결해야 한다.따라서 IP 주소를 지정해야 합니다.구체적으로 말하면 첫 번째 문장은 다음과 같다.
    target extended-remote host.docker.internal:3333
    

    좋은 웹페이지 즐겨찾기