Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RISC-V system register 접근 시 이미 구현된 crate를 이용하도록 변경 #569

Open
Gabriel4256 opened this issue Jul 28, 2021 · 3 comments
Assignees

Comments

@Gabriel4256
Copy link
Collaborator

현재 Risc-V 버전에서 system register에 접근하는 경우에는 asm! 매크로를 이용하는데, 이보다는 아래와 같이 잘 구현된 library를 활용하는 것이 code queality 면에서 더 좋을 것 같습니다.
https://crates.io/crates/riscv/0.6.0

@jeehoonkang
Copy link
Member

@Gabriel4256 혹시 올래 걸리지 않을 것으로 예상하면 이것도 해주실 수 있으실까요? (오래 걸릴 것 같다면 말씀해주세요)

@Gabriel4256
Copy link
Collaborator Author

해당 library가 std에 의존합니다. 다른 좋은 library를 찾지 못해서 일단 보류하겠습니다.

@travis1829
Copy link
Collaborator

travis1829 commented Feb 4, 2022

@Gabriel4256
Cargo.toml에 다음 내용을 추가하면 std dependency가 제거되는걸 확인했습니다. (참고)

[package]
resolver = "2"

다만, 이렇게 하더라도 riscv crate가 저희 target (riscv64gc-unknown-none-elfhf.json)을 지원하지 않아 compile이 실패합니다.

  • 지원되는 target 목록 : https://github.com/rust-embedded/riscv/tree/master/bin
  • riscv64gc-unknown-none-elfhf.json 대신 riscv64gc-unknown-non-elf을 사용하면 compile 및 make qemu가 성공하긴 합니다. (참고 : kernel-rs/arch/riscv 의 모듈명도 바꿔야 compile됩니다.)
    cargo build --manifest-path kernel-rs/Cargo.toml --target riscv64gc-unknown-none-elf
    

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants