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

0856167 Lab 07 08 #240

Open
wants to merge 11 commits into
base: 0856167
Choose a base branch
from
Open

0856167 Lab 07 08 #240

wants to merge 11 commits into from

Conversation

Yunyung
Copy link

@Yunyung Yunyung commented Jul 9, 2021

↓↓↓ Notice ↓↓↓

  • Check your base repository and branch are belong to you.
  • The PR name need to include student ID and which lab assignment
    • template: ${student id} ${which lab}
    • e.g. 0756110 lab0

↑↑↑ Notice ↑↑↑

If you ensure the notice items is done, you can remove them.


Following section is optional, depend on you.

Description

a few message for overall goals of this pull request

Todos

  • what feature to do ?
  • what bug to fix ?
  • what enhancement to improve ?

@GrassLab/ta

Yunyung added 11 commits May 28, 2021 17:39
In Lab7, we implement FAT32 file system with sd card
hardware device.

Implement the following features:
1. Implement FAT32 file system that meet the VFS interface.
2. Access sd card by simple sd card device driver (Provided by TA).
3. Mount the fat32 to VFS from sd card.
4. Read/Parse Master Boot Record(MBR) and FAT32 boot sector.
5. Open/Read/Write/Create a file in FAT32 and sd card.
6. Cache the directory entry read from device in memory for
   pathname lookup (Eletive 4-1).
7. Add some test files in "./sdcard" folder and build some
   test cases.
Initialize the memory management unit(MMU) and set up the
address spaces for the kernel and user processes
to achieve process isolation

1. Set up TCR_EL1 and mair_el1 system register for configuring MMU
2. Modify linker script to meet MMU configs
3. Set up identity paging.
4. Linear map kernel with three layer translation(secotion mapping, 2MB)
   granularity
Requirement2:
    - Implement user space paging.
    - Revisit fork() and exec() to map the same virtual address to
      different physical addresses for different processes.
    - Set ttbr0_el1 to switch the user space page table and
      address space in context switches.
    - Implement a simple page fault handler.
    - Write test cases for fork and exec syscalls.
Elective3, Imeplement Page Fault Handler & Demand Paging:
    - (Segmentation fault) If the fault address is not part of any
      region in the process’s address space, process will be killed.
    - (Demand paging) If it’s part of one region, map one page frame
      for the fault address. It's tested and occured by stack
      page allocation, because we not allocate page for stack when
      create process.
The reason why program run on hardware failure is that
uart read interrupt might be triggered continously when
we initalize rpi3 hardware. Sometimes there are a random char
is generated during booting rpi3 for no reason(We can't find the reason)
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

Successfully merging this pull request may close these issues.

None yet

1 participant