---
# System prepended metadata

title: 2021 年「資訊科技產業專案設計」課程作業 4

---

# 2021 年「資訊科技產業專案設計」課程作業 4

contributed by < `老藍 - Old Blue` >

- [作業要求](https://hackmd.io/@sysprog/info2021/https%3A%2F%2Fhackmd.io%2F%40sysprog%2Finfo2021-homework4)
## Backgroud

### Linux CPU scheduler
Limux kenel cpu scheduler knowledge.
* O(1) scheduler
* Rotating Staircase DeadLine scheduler
* Brain fuck scheduler
* Completely fair scheduler

Implement multilevel feedback queue.
* [Scheduler-simulator](https://github.com/TsenEn-Chou/Scheduler-simulator)
    * 還有很多需要改進的地方，譬如資料結構的使用並沒有很理想。很多地方對於排班的效能來說都是 bottleneck。
    * repo 現在因為一些原因是 Private，之後會改成 public。
    * 這個 repo 主要利用 ucontext 來實作 context switch 
* Simulate user level thread scheduling
* implement context switch
* signal handuler


### FreeRTOS
2021『嵌入式作業系統分析與實作』課堂助教
* IDE : STM32CubeIDE-DEB 1.5.1
* Development kit : STM32F407G-DISC1

Create multi-task in FreeRTOS to implement a simulation traffic light.
* [FreeRTOS-MultiTask-LED](https://github.com/TsenEn-Chou/FreeRTOS-MultiTask-LED)
* Message passing
* Task create, task resource

Configure the register of the motion sensor, trigger an interrupt when the threshold is reached, and use deferred interrupt handling to handle the tasks that ISR needs to handle.
* [FreeRTOS-Deferred-Interrupt-Handling](https://github.com/TsenEn-Chou/FreeRTOS-Deferred-Interrupt-Handling)
* Semephore
* ISR
* SPI

Learn the FreeRTOS scheduling algorithm and data structure, and use the UART to print the task information of the run time on the console.
* [FreeRTOS-TaskMonitorAPI](https://github.com/TsenEn-Chou/FreeRTOS-TaskMonitorAPI)
* Data structure
* scheduler algorithm
* UART

Modify the freeRTOS Heap 2 mechanism to merge the deallocate memory blocks
* [FreeRTOS-Modify-heap2-mechanism](https://github.com/TsenEn-Chou/FreeRTOS-Modify-heap2-mechanism)
* best fit algorithm 
* memory alignment
* memory block data structure

### Controller area network(CAN bus)
由德國 BOSCH 提出，是一種汽車 ECU 之間溝通的 protocol。廣泛應用在汽車與重型工具上。

CAN Bus 是一種 no host 的通訊協定，所有 ECU 會爭先恐後地發布自己的資訊到 Bus 上，之後會經由 ECU 的 ID 來決定哪個 ECU 可以將資訊公佈在 Bus 給其他 ECU 接收。

ID 越小優先級越高，因為 ID 可以轉換為 2 進制，而因為電路特性 0 的優先級會比 1 來的高，所以當 0/1 在同一個時間下碰撞，0 會優先輸出。

[More specific](https://docs.google.com/presentation/d/1izT82PVEvGillQviKcg-YeaxzztI_1YQ/edit#slide=id.ge1a2a980f7_0_3)

### AutoSar

碩論相關
* RTE
* OS
* COM

### NVM & PIM
閱讀相關的 paper

## 檢視自己

統整下來我覺得我可以嘗試進攻開發汽車軟體架構，因為碩論主要是相關於 AutoSar ，我對於 CAN 也有一些了解，面試應該能答出一二。而我學習的 FreeRTOS & Linux 的相關知識或許對開發汽車軟體也會有幫助。

再者，近期有練習一些 Leetcode 題目，有練習到一些演算法的知識與應用。所以應該會找需要考 LeetCode 的公司。

**總結**：目前我會先找跟開發汽車軟體相關的職缺，以及 google Software Engineer。

## 相關職缺


### [Software Engineer, Autonomous Vehicles Platform](https://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite/job/China-Shanghai/Software-Engineer--Autonomous-Vehicles-Platform_JR1948219)

#### 工作內容
**Design and implement Autonomous Vehicles software platforms,** including kernel modifications/extensions, driver implementation/improvements, system integration, performance/power optimization, stress/stability/compliance test

#### My advantage
在 "Ways to stand out from the crowd" 中提到
1. Prior experience working with CAN and tools
2. Knowledge of AUTOSAR SW and development tools

這兩點在我過去以及未來一年的經歷，都有所接觸，他們可能會問我 CAN/AUTOSAR 的相關知識。

About CAN:
1. 分享我在所認知 CAN prorocol 的知識
2. 期末專題跟同學利用 stm32f407-discovery 中的 CAN 達到多板溝通使 OSEKNM 可在其上面運作。

About AUTOSAR:
1. 碩論

#### My disadvantage
1. QNX RTOS, RADAR, LiDAR 不熟悉
    * 這個會是硬傷，因為他們在工作內如提到 
    “Drive the reliability of the software platform which includes RADAR, LiDAR, Camera sensor processing and fusion”
    "Work in an environment which involves Hypervisor, Linux, QNX RTOS"

### [Software Engineer, Device Enablement, Chrome OS](https://careers.google.com/jobs/results/129172490308985542-software-engineer-device-enablement-chrome-os/?distance=50&q=Software%20Engineer,%20Device%20Enablement,%20Chrome%20OS)

#### 工作內容
坦白說這個職缺講得很淺只有提到 Chrome OS, Chromebooks。

#### My advantage
Experience with Linux kernel and device drivers.
Experience with embedded systems

#### My disadvantage
