有時候函式某些參數, 可能只要第一次代入後,
而之後呼叫時參數都是相同的, 不希望每次呼叫都要一直代入相同的參數…
而之後呼叫時參數都是相同的, 不希望每次呼叫都要一直代入相同的參數…

- 使用global 變數 ? 程式結構不佳
- 使用預設參數? 但預設的又不是我想要的, 也是等於每一次呼叫都要代入
- 拿掉該參數? 但因為至少第一次呼叫時可能要代入不同的值, 但拿掉後此函數後就無法有代入參數的能力了
更多python程式設計請參考 Python 程式設計
KERNEL=kernel7
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig
KERNEL=kernel7l
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2711_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs -j 2
# 安裝 kernel modulemake ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=../modules modules_install
sudo cp arch/arm/boot/zImage /boot/
$KERNEL.img
sudo cp arch/arm/boot/dts/*.dtb /boot/
sudo cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/
About LaTeX
很多論文及科學文章都會用到LaTeX。它是一個公式編輯系統,使用簡單的指令構建出專業的數學公式。
![]() |
value buffer size in bytes 是指value buffer的大小; 而 value length in bytes 是請求欄位佔幾個Byte |
目前課程影片進行到CH3-3 Linux GPIO Host Controller驅動程式,有一些問題如下:
- 01_LED中chr_led.c使用gpio_set_val
ue對GPIO Pin設定輸出值,往Kernel Source Code追: gpio_set_value -> __gpio_set_value -> gpiod_set_raw_value -> _gpiod_set_raw_value ->
static void _gpiod_set_raw_value(struct gpio_desc *desc, bool value)
{
struct gpio_chip *chip;
chip = desc->chip;
trace_gpio_value(desc_to_gpio(desc), 0, value);
if (test_bit(FLAG_OPEN_DRAIN, &desc->flags))
_gpio_set_open_drain_value(desc, value);
else if (test_bit(FLAG_OPEN_SOURCE, &desc->flags))
_gpio_set_open_source_value(desc, value);
else
chip->set(chip, gpio_chip_hwgpio(desc), value);
}
追到最後是課程影片中提到的struct gpio_chip,但是課程提供的Image中找不到bcm2708_gpio.c這個檔案,struct gpio_chip中的function應該都是實作在這個檔案 中?
- 根據課程影片,gpio_set_value是上層API,由K
ernel定義。struct gpio_chip中的function pointer實作則為底層硬體相關,這個部分理論上應該是So C廠實作並提供給客戶嗎?想知道業界實務上怎麼分配?實務上, 如果拿到一塊公版,SoC Vendor會提供整包Linux或Android Source Code,我們只需要針對自己選擇的外接硬體寫驅動程式嗎?
- SoC Vendor是否連Driver Template都會一起提供於整包OS Source Code中,只需要修改對應硬體部分?譬如,選擇的Displa
y不同,選擇的Sensor不同,只需要在module_ init()中修改初始化代碼?
有個問題請教一下
Linker Start up code那個章節 56分:28秒的那一段1. For broad com的bootloader,是不是也應該會把vector table copy to RAM 0x00的位置?2. Power on and Reset 是一樣的嗎? 都會直接執行RAM上面0x00的位置? 還是Power on的時候會從走一次bootloader,然後copy vector table to RAM 0x00.
Power ON流程中就會重新copy vector table from ROM to RAM的動作. 所以RAM的內容會被換掉Vector table 是描述於ROM裡程式碼中,這些內容會被複制到RAM中
我想知道一般broadcom的bootloader,不含我們bootloader的流程。到底有沒有copy vector table to RAM 0x00,以及power on/off and reset是否一樣? 如果不一樣,是否power on/off, bootloader會重新copy vector table to RAM, 至於reset是用之前已經copy過存留在RAM的vector table.
sendData("AT+CWMODE=1\r\n", 1000, DEBUG); // access point
sendData("AT+CIFSR\r\n", 1000, DEBUG); // get ip address
sendData("AT+CIPMUX=1\r\n", 1000, DEBUG); // configure for multiple connections
sendData("AT+CIPSTART=4,\"TCP\",\"api.thingspeak.com\",80\r\n", 1000, DEBUG); // turn on server on port 80
key = 23; //random number for testing
String web = "GET http://api.thingspeak.com/update?api_key=KTQXXXXXXXXXXXXX&field1="";
web += key;
web += "HTTP / 1.0";
web += "\r\n";
web += "\r\n";
//HTTP Body 開始
String cipsend = "AT + CIPSEND = ";
cipsend += 4;
cipsend += ", ";
cipsend += String(web.length());