diff --git a/README.md b/README.md index 7c91bb53b7e37f132e2f7ea3b4ba18ff9706d8c2..05d7e5ca174e5ae5de8c9d40129ab39268c21aba 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,51 @@ # Granite +## 项目结构说明 + +è¿™é‡Œçš„ç»“æž„åªæ˜¯æš‚时的,有计划给它大改 + +### bintool + +æ”¾ä¸€äº›è°ƒè¯•ç”¨çš„å·¥å…·ï¼Œåƒæ˜¯æŽ¢æŸ¥ elf 内容,打包 elf 之类的 + +### drivers + +设备驱动和缓å˜çš„æŠ½è±¡ï¼Œç›®å‰åªæœ‰å¯¹å—设备的抽象。åŽç»è¯´ä¸å®šä¼šé‡æ–°ç»„织一下。 + +### easy-fs + +rCore çš„é—留,ä¸å¿…太在æ„,å¯ä»¥åˆ 掉 + +### fat32 + +åªæ˜¯åŒ…一层第三方库 fatfs æ¥å®žçŽ°æŽ¥å£ + +### kernel + +ç³»ç»Ÿçš„æ ¸å¿ƒéƒ¨åˆ†ï¼Œç›®å‰ç»„织有点乱,未æ¥å¯ä»¥è€ƒè™‘修改 + +### res + +å‚考资料;系统镜åƒï¼›BootLoader ä¹‹ç±»çš„ã€‚æ€»ä¹‹æ˜¯ä¸€äº›ç›¸å…³çš„èµ„æº + +### rust-fatfs + +第三方 fat32 库,åšäº†ç‚¹ç»†å¾®çš„修改以适应本项目的需求 + +### user + +rCore 的残留,ä¸è¿‡ä¹Ÿå¯ä»¥æ‹¿æ¥åšæµ‹è¯•ç”¨ï¼Œæ‰€ä»¥ä¸æ€¥ç€åˆ 。 + +### vfs + +virtual file system. + +ç†æƒ³æƒ…况下,希望æ¯å¢žåŠ ä¸€ç§æ“作系统的支æŒï¼Œå°±ä¸ºå…¶å®žçް vfs 的接å£ã€‚å†…æ ¸é‚£è¾¹ä¸å¤ªéœ€è¦å…³å¿ƒè¿™ç§æ”¹å˜ã€‚ + +ä¸è¿‡å®žé™…ä¸ŠçŽ°åœ¨å†…æ ¸é‚£é‡Œè¿˜æ˜¯å†™æ»äº†ç”¨çš„ fat32。 + +这个抽象的ä½ç½®æ„Ÿè§‰ä¹Ÿä¸å¤ªåˆé€‚。如果是å®å†…æ ¸ï¼Œå®ƒåº”è¯¥æ”¾åˆ° kernel 里。 + ## 规范 åŠ è½½å™¨åŠ è½½ ELF 坿‰§è¡Œæ–‡ä»¶æ—¶ï¼Œ`argc`ã€`argv`ã€å‚æ•°ã€çŽ¯å¢ƒå˜é‡ã€`auxv`ã€å¦‚ä½•æŽ’å¸ƒæ˜¯æœ‰å…·ä½“è¦æ±‚的。 @@ -37,7 +83,8 @@ Linux ä¸çš„线程就是一ç§è½»é‡çº§è¿›ç¨‹ï¼Œè¿™å’Œ rCore 䏿˜¯ä¸å¤ªä¸€æ · ## Todo List +- [ ] é¡µè¡¨æœºåˆ¶è¦æ¢ã€‚ç›®å‰æ˜¯ rCore å¼çš„åŒé¡µè¡¨ï¼Œé€šè¿‡è·³æ¿è¿›è¡Œ trap 处ç†ã€‚ä½†å®žè·µä¸‹æ¥æ„Ÿè§‰é€ æˆçš„é—®é¢˜æ›´å¤šï¼Œåˆ‡æˆ linux 或者 windows é‚£æ ·çš„æœ€å¥½ã€‚è¿™ä¸ªå·¥ä½œè¶Šæ—©è¿›è¡Œè¶Šå¥½ï¼Œå› ä¸ºå½±å“颿¯”较广。 - [ ] Cow 虚拟页 - [ ] 页é¢ç½®æ¢ -- [ ] ä¿¡å·æœºåˆ¶ -- [ ] æ ‡è®° `unsafe` +- [ ] ä¿¡å·æœºåˆ¶ã€‚ç›®å‰è¿˜æ²¡æœ‰å…·ä½“的处ç†ã€‚ +- [ ] æ ‡è®° `unsafe`ã€‚è¿™é‡Œçš„é˜»ç¢æ˜¯æˆ‘ä¸å¤ªæ•¢å¯¹ `unsafe` 乱下手,å¯èƒ½è¿˜å¾—花时间看æ»çµä¹¦ diff --git a/bintool/src/bin/elf.rs b/bintool/src/bin/elf_extractor.rs similarity index 83% rename from bintool/src/bin/elf.rs rename to bintool/src/bin/elf_extractor.rs index 32dfa585391f1b1947695b88504e7cef990b68bb..6f534d4223882660c508a9c527f7b5c9b4d38128 100644 --- a/bintool/src/bin/elf.rs +++ b/bintool/src/bin/elf_extractor.rs @@ -1,3 +1,5 @@ +//! 用于从æ“作系统镜åƒä¸æŠ½å–文件内容 + use std::{fs::File, io::Read}; use fatfs::{FileSystem, FsOptions}; @@ -18,9 +20,3 @@ fn main() { .unwrap(); std::fs::write("lua.elf", data).unwrap(); } - -#[test] -fn test_wrapping() { - let a = usize::MAX - 1000; - println!("{}", a as isize); -} diff --git a/bintool/src/bin/elf_probe.rs b/bintool/src/bin/elf_probe.rs index 3fa4c0863aea789dbc5b71cd0cee0ad4317be13e..0903fc42797f01d70f9a1308b71b6fdab3e04fc3 100644 --- a/bintool/src/bin/elf_probe.rs +++ b/bintool/src/bin/elf_probe.rs @@ -1,3 +1,5 @@ +//! elf 探针。å•çº¯æ˜¯ç”¨äºŽåŠ è½½å’ŒæŸ¥çœ‹ elf 内容的东西 + use std::{fs::File, io::Read}; use fatfs::{FileSystem, FsOptions}; @@ -16,5 +18,5 @@ fn main() { .unwrap() .read_to_end(&mut data) .unwrap(); - let elf = xmas_elf::ElfFile::new(&data).unwrap(); + // let elf = xmas_elf::ElfFile::new(&data).unwrap(); } diff --git a/bintool/src/bin/pack.rs b/bintool/src/bin/pack.rs index f2fc425856ecc3b96d14f7ae88e585c8138d7997..d2f0c227a015d94b1fb57f49e02e710f54faff96 100644 --- a/bintool/src/bin/pack.rs +++ b/bintool/src/bin/pack.rs @@ -1,3 +1,5 @@ +//! ç”¨äºŽå‘æ“作系统镜åƒé‡Œé¢åŠ å…¥ä¸€äº›åº”ç”¨ + use std::fs::File; use fatfs::{FileSystem, FsOptions, Write};