IPad Pro 生產力 邊看網頁 邊筆記 取得連結 Facebook X Pinterest 以電子郵件傳送 其他應用程式 - 6月 20, 2020 如何在ipad pro 邊看網頁 邊做筆記 (ipad os)Safari選取(標示)後就可以開使做筆記.最後再選則存成pdf檔案,日後就可以用再複習編輯。 取得連結 Facebook X Pinterest 以電子郵件傳送 其他應用程式 留言
Raspberry Pi (ARMv6)上自幹一個微小作業系統 - 3月 21, 2015 大約半年前,我加入fb的F9 based JuluOS與黃敬群老師( Jserv) 成大嵌入式系統課程社團,我才發現原來台灣有那麼多人在研究作業系統開發,我也想試試開發一個小小的OS。 從0開始寫一個OS是相當有趣的過程,可以檢視自己對C、資料結構、作業系統、計算機組織的瞭解程度,誠實的面對自己,雖然自己在系統廠工作幾年了,還是很多基礎知識不足,也許這就是為什麼那麼多高手可以在ic design house,而我在系統廠吧,寫這個小OS,只是學習的開始,接下來我會多研究其它的OS,例如:xv6、F9 microkernel、freeRTOS... 我把開發流程一步一步記錄,從bare metal Helloworld,加入printk,配置MMU, IRQ中斷,記憶體管理(Buddy system),到最後加入system call、process fork與round robin scheduling,方便學習。 所有原始程式碼都放在github上: https://github.com/tzuCarlos/RaspberryPi 我使用qmeu測試: 這邊有執行的結果: https://github.com/tzuCarlos/RaspberryPi/blob/master/mimiOS/RESULT 系統說明: 先拖稿一下,下班還要唸書,顧嬰兒很累的,改天有空補上一步步說明XD 未來工作: 1.把ARM的架構跟ARM組合語言弄熟。 2.系統memory map我還沒好好規畫,只是想到做什麼功能,就找一塊出來。 3. 沒有檔案系統,沒有shell、沒有驅動程式構架。 ... 閱讀完整內容
Linux VLAN 筆記 - 1月 26, 2015 Linux VLAN 筆記 kernel 開啟802.1q功能後,便可以透過簡單指令,設定VLAN. brctl delif br0 ath0 brctl delif br0 eth0 vconfig add ath0 555 vconfig add eth0 555 ifconfig ath0.555 up brctl addbr br555 brctl addif br555 ath0.555 brctl addif br555 eth0.555 ifconfig ath0.555 up ifconfig eth0.555 up ifconfig br555 10.0.0.11 up Wireless AP mode運作正常,抓無線封包有看到帶了VLAN ID 555. 不幸的是,我的Wireless STA,不能成功ping到我的AP,只好下去看程式,這邊有幾個部份要看. 1. Linux kernel 802.1q 2.Wireless driver.(我手邊的是Atheros proprietary LSDK driver,所以這部份內容都不會放上來) 3.hostapd跟wpa_supplicant. Linux的net_dev是用一個list串起來,每個net_dev都有會呼叫ev_queue_xmit ->dev_hard_start_xmit ,去傳送封包至下一步。 vlan.c::vlan_proto_init()時會invoke,dev_add_pack(&vlan_packet_type); static struct packet_type vlan_packet_type __read_mostly = { .type = cpu_to_be16(ETH_P_8021Q), .func = vlan_skb_r... 閱讀完整內容
自己動手做OS之Raspberry Pi MMU initialization. - 11月 19, 2014 寫了一個簡單的bare metal啟動MMU的程式, 把實際位址0x20000000~0x210000000 對應到虛擬位址0xa0000000~0xa1000000 ARM MMU的部份在ARMv6之前跟之後的版本不同, 請看Technical Reference Manual。 Raspberry Pi MMU initialization example. hackpad note:https://lbd.hackpad.com/MMU-initialization-Jl8YoJ3iUdf source code:https://github.com/tzuCarlos/RaspberryPi/tree/master/labMMU 為什麼需要MMU? TODO:.... 頁表(page table)是由頁表項(page table entry, PTE)組成的 。 每一個PTE包含一段虛擬位址(page)映射到一段實體位址的資訊,而page的大小依ARM core版本不同,有不同的支持1K(tiny page), 4K(small page), 64k(large page), 1MB, 16MB。 page的大小決定了映射的粒度(granularity): 如果我們把page切1MB,那64MB的記憶體就需要64MB/1MB的PTE,每個PTE是32bits(4bytes),64x4=256bytes頁表項空間。4G就是4096x6=16384=16K 切1K,4K,64K需要用二級查表,1MB,64MB用一級查差,二級差表用途是縮小PTE,以減少佔用記憶體空間,但降底了尋址的效率。 16M的page叫super section, 1M的叫section。 L1表還有個名稱叫page directory entry(PDE)。 ARM 的位址轉換涉及底下三種位址[1]: 虛擬位址 (Virtual Address,VA): CPU 送出的位址。 修改後的虛擬位址 (Modified Virtual Address,MVA): 快取和 MMU 看到的是 MVA。 物理位址 (Physical Address,PA): 內存看到的是 PA。 ... 閱讀完整內容
留言