|
|
发表于 2014-5-19 00:18:30
|
显示全部楼层
Jone 发表于 2014-5-18 23:12 
谢谢,明白了!讲得很清楚。
还有一个问题,同样是ethercard库,从https://github.com/jcw/ethercard/下 ...
由於我沒用過, 我只能從表面的資料猜測.
由於發出 http request 時, 有些東西比較 static, 可以用 flash memory 去儲存而減少 SRAM 的耗用.
但當中的 urlbuf, 字面上看是一個 buffer (buf = buffer 簡寫?), 正常 buffer 是需要在執行中讀寫的, 但再看你提供的連結的代碼, 他的 buf 可能只是用作儲存一些固定的 url.
因此, 他把 urlbuf, hoststr, additionalheaderline 的資料都改成用 flash memory, 函數中用 prog_char* 去讀取 PROGMEM 的資料, 而非 char*. 但 postval 會因應要求不同而改變, 所以保留用SRAM.
兩個函數分別用了 flash 和 SRAM 作參數, 在讀取參數的部份肯定有分別了, 但執行的邏輯可以是一樣的.
|
|