amberchung

@amberchung

Joined on Oct 30, 2020

  • 在研究linux過程中,會常常看到變數或函式前會加上static進行修飾,然而什麼時候應該要用到static? 若想要變數或函式只能在一個.c檔內部使用,就可以在變數或函式前加上static,以防止外部程式碼修改之。 例: test.c static int i = 0; static void function(int parameter){….}
     Like  Bookmark
  • 本文以Beaglebone版子為例,linux 4.19.142 系統移植請參閱 beaglebone black wireless開發板系統移植 spidev驅動、spidev_test測試,則可參閱如何使用linux內核提供SPI設備驅動Spidev 確定驅動檔案 為了找到內核與SPI相關的程式碼,利用以下步驟 1. 進入kernal資料夾,使用make menuconfig 選擇Device Drivers
     Like 1 Bookmark
  • 在單晶片中常常需要操作硬體寄存器,也就是對寄存器的地址進行讀取或寫入等操作,因此要如何定義已知寄存器的位址以方便程序員操作呢? 一般變數宣告 int a = 5; // 變數a會由編譯器自行產生地址,其內容為5 int *b; 若要指定指標的位置,則int *b = 0x20000000; 但此時編譯器會編譯錯誤,錯誤類型為型態錯誤。 因此需將整數強制轉成指標 int *b = (int *)0x20000000;
     Like  Bookmark
  • Linux系統中有許多輸入設備:鍵盤、滑鼠、觸摸屏幕…等,而若是針對每一個輸入設備撰寫相對應的驅動程序,則應用層就必須知道每個設備節點的名稱,根據不同的設備開啟不同的設備節點,只要其中一個設備修改,就必須修改應用層,對整個系統產生不小的影響。 因此Linux系統發展出一套能夠兼容所有輸入設備的系統:輸入子系統(Input subsystem),將所有輸入設備進行統一管理,抽象出三部分:軟件處理、硬件處理、連接軟件與硬件處理。由此框架得知,若新增一輸入設備,程序員只需要根據輸入子系統的框架撰寫硬件處理驅動即可,應用程序仍可以依照輸入子系統定義的API去操作硬件。 Linux 4.19.x 內核解析 drivers/input/input.c: 1. 入口函數:input_init 2. 註冊 加載evdev.c時入口函數會註冊handler,加載gpio_keys.c入口函數會註冊device
     Like  Bookmark
  • 本文以Beaglebone版子為例,linux 4.19.142 系統移植請參閱 beaglebone black wireless開發板系統移植 Spidev驅動代碼移植 1. 檢查kernal是否有build spidev驅動 進入beaglebone版子kernal目錄 cd bb-kernal/KERNAL 選擇spidev驅動 make menuconfig
     Like  Bookmark
  • 移植和啟動 TI官方Linux系统移植WiKi Kernal使用 am33x-v4.19 (Longterm 4.19.x) BeagleBone Black学习(一)—— 移植和启动 開發板手動設定wifi ubuntu@arm:~$ sudo connmanctl [sudo] password for ubuntu: Error getting VPN connections: The name net.connman.vpn was not provided by any
     Like  Bookmark