有時候函式某些參數, 可能只要第一次代入後,
而之後呼叫時參數都是相同的, 不希望每次呼叫都要一直代入相同的參數…
而之後呼叫時參數都是相同的, 不希望每次呼叫都要一直代入相同的參數…
- 使用global 變數 ? 程式結構不佳
- 使用預設參數? 但預設的又不是我想要的, 也是等於每一次呼叫都要代入
- 拿掉該參數? 但因為至少第一次呼叫時可能要代入不同的值, 但拿掉後此函數後就無法有代入參數的能力了
更多python程式設計請參考 Python 程式設計
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.
是會有誰把vector table copy過去才對。但影片中說reset一開始就跑0x00,0x00要有instructions.讓我聽得有點模糊。 reset的時候 , RAM的內容都還保留著? 只有Power on and Power on的情況才會重新從bootloader copy vector table to RAM?
我想知道一般broadcom的bootloader,不含我們bootloader的流程。到底有沒有copy vector table to RAM 0x00,以及power on/off and reset是否一樣?
在ARM Reset時, 做copy o RAM (可參考上課實作的程式碼)
如果不一樣,是否power on/off, bootloader會重新copy vector table to RAM, 至於reset是用之前已經copy過存留在RAM的vecto
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());