0%

簡介

编译函数或变量到指定地址

  • 将函数加载到指定位置 示例将 main.c 中的 delay 函数指定到 0x08020000 地址,可以在 c 文件中函数的定义处指定 delay 函数。 void delay(void) __attribute__ ((section(".ARM.__at_0x08020000")));
  • 将数组加载到指定位置 int Temp[] __attribute__ ((section(".ARM.__at_0x08020000"))) = {0x1, 0x2};
  • 将变量加载到指定位置以 AT32F403AVGT7 为例: 示例可以直接将 c 代码修改如下: const int Temp __attribute__ ((section(".ARM.__at_0x08020000"))) = 10; // RO int Temp __attribute__ ((section(".ARM.__at_0x20000000"))) = 10; // RW

加入 C Source File

User 右鍵 > Manage Project Item > Add Files 記得要選要加入的 Group,加入 C 檔即可,H 檔不用加

shc

一個通用的 shell 腳本編譯器。Shc 接受一個在命令列中指定的腳本,並產生 C 原始碼。生成的原始碼隨後會被編譯並鏈接,以產生一個去除符號表的二進位可執行文件。 編譯後的二進位文件仍然依賴於 shell 腳本第一行中指定的 shell(即 shebang,例如 #!/bin/sh),因此 shc 無法創建完全獨立的二進位文件。 Shc 本身並不是一個像 cc 那樣的編譯器,而是對 shell 腳本進行編碼和加密,並生成具有到期功能的 C 原始碼。之後,它使用系統的編譯器來編譯出一個去除符號表的二進位文件,該文件的行為與原始腳本完全相同。在執行時,編譯後的二進位文件將解密並使用 shell 的 -c 選項來執行代碼。

SMBus Specifications I2C 很像的協議

SMBus vs I2C

  • I²C 匯流排可在任何時刻停滯(時鐘靜止),而不影響數據傳輸。主設備或從設備皆可將時鐘線保持在低電位,直到完成數據處理。
  • SMBus 匯流排要求時鐘線不低於 10kHz,且不高於 100kHz,並設有 35ms 超時機制,若時鐘線維持低電位超過 35ms,則從設備將自動重置其介面。
  • 由於 SMBus 要求時鐘不能靜止,因此 SMBus 需要一個最小時鐘速率,而 I²C 則沒有此限制
  • 資料持留時間(Data Hold Time)的要求,SMBus 規定 SMBCLK 線路的準位下降後,SMBDAT 上的資料必須持續保留 300nS,但 I2C 卻沒有對此有相同的強制要求。
  • I²C 允許從設備 (Slave) 在地址階段回應 NACK,當設備無法接收數據時 (例如正在執行即時任務),可以拒絕通信。此時,主設備 (Master) 可以發送 STOP 信號 或 重啟 START 信號 以重新傳輸;SMBus 要求設備始終應答 (ACK) 自己的地址,以確保能夠偵測到 可移除設備 是否仍然連接至匯流排。

Address

  • 0000 1xxx = I2C HS-mode master code; SMBus reserved for future use.
  • 0101 000x = SMBus reserved for ACCESS.bus host.
  • 0110 111x = SMBus reserved for ACCESS.bus default address.
  • 001 100x = SMBus Alert Response address.
  • 1100 001x = SMBus Device Default address.

Bind Event

一定要用設計窗口的屬性新增,不可以直接寫同名函數,不會綁定

Require UAC

  • 加入應用程式資訊清單
  • 在應用程式資訊清單中將 requestedExecutionLevel 改為以下設定
1
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
  • 確定屬性 > 應用程式 > 程式資訊清單 指向加入的應用程式資訊清單

Add Dll

  • 將 dll 及其所需檔案利用 加入 > 現有項目 加入專案
  • dll 的 屬性>建置動作 設定為內容,其他設為無
  • 所有加入的檔案 屬性>複製到輸出目錄 設定為一律複製
  • 用 DllImport 連結要使用的函式在 class 定義中

DllImport

exposed by an unmanaged dynamic-link library (DLL) as a static entry point

Windows API Set 適用於 Windows 10 以上

Windows API set name is a virtual alias for a physical .dll file. It’s an implementation-hiding technique, where you as the caller don’t have to know exactly which module is hosting the information. PC 上的任何位置不一定存在具有該名稱的 dll 檔

API 集由一個強契約名稱來標識

以api-開頭的名稱表示保證存在於所有 Windows 版本上的 API。 以ext-開頭的名稱表示可能並非在所有 Windows 版本上都存在的 API。 這個名稱必須以序列l&lt;n&gt;-&lt;n&gt;-&lt;n&gt;結尾,其中n由十進制數字組成。 該名稱不區分大小寫。 範例:

德州儀器的 Battery Charge Controller

支援用 I2C 設定最大充電電壓及電流,並提供電路保護

Enhanced safety features for over voltage protection, over current protection, battery, inductor and MOSFET short circuit protection BQ24725A 使用兩個電荷泵分別驅動 n 通道 MOSFET(ACFET、RBFET 和 BATFET),以實現自動系統電源源選擇。

Open Ai Whisper

Whisper 是一種通用語音辨識模型。它是在大量不同音訊資料集上進行訓練的,也是一個多任務模型,可以執行多語言語音識別、語音翻譯和語言識別。 Open Ai 用 Pytorch 實做的語音轉文字的實做,多語言效果良好

Build

1
curl -L https://huggingface.co/bartowski/Llama-3.2-1B-Instruct-GGUF/resolve/main/Llama-3.2-1B-Instruct-IQ3_M.gguf?download=true -o Llam-3.2-1B.gguf

下載 Llam 模型

AMD CPU

1
2
3
4
git clone --depth 1 https://github.com/ggerganov/llama.cpp.git
cmake -Bbuild
cd build/
make -j8
1
bin/llama-cli -m Llam-3.2-1B.gguf -p "Hi" -n 100

Vulkan AMD

1
2
3
sudo apt install vulkan-tools libvulkan-dev glslc

bin/llama-cli -m Llam-3.2-1B.gguf -p "Hi" -n 100 -ngl 1000

簡介

Blum, Blum & Shub 一種偽隨機數產生器 $\displaystyle x_{n+1}=x_{n}^{2}{\bmod {M}}$, $M = pq$ , p and q are not factors of $x_{0}$ 第 i 項的疊代公式

$\displaystyle x_{i}=\left(x_{0}^{2^{i}{\bmod {\lambda }}(M)}\right){\bmod {M}}$

1
2
3
4
5
p = 11
q = 23
x = 3
for i in range(10000):
    x = (x ** 2) % (p * q)
1
[9, 81, 236, 36, 31, 202, 71, 234, 108, 26, 170, 58, 75, 59, 192, 179, 163, 4, 16, 3]

Logic Analyzer

機器上無顯示,需要連接電腦

Chip

英飛凌的EZ-USB FX2LP 和EZ-USB FX2G2 是業界事實上的USB 2.0 週邊控制器,為任何設備添加了USB 高速(480 Mbps)、全速(12 Mbps) 和低速(1.5 Mbps)連接。 EZ-USB FX2LP 和 FX2G2 的通用可程式介面 (GPIF) 可連接到處理器、影像感測器、FPGA 或 ASIC。使用者可以對 GPIF(通用可編程介面)進行編程,使其表現得像 FIFO、非同步 SRAM、位址/資料復用介面、CompactFlash 或專有介面

Naming Files, Paths, and Namespaces

DOS Path

C:\File 路徑不得有以下保留字元:

  • < (less than)
  • &gt; (greater than)
  • : (colon)
  • &quot; (double quote)
  • / (forward slash)
  • \ (backslash)
  • | (vertical bar or pipe)
  • ? (question mark)
  • * (asterisk)
  • ASCII NULL

檔案名稱或目錄名稱請勿以空格或句點結尾。儘管底層檔案系統可能支援此類名稱,但 Windows shell 和使用者介面不支援。但是,可以將句點指定為名稱的第一個字元 shell 和檔案系統有不同的要求。可以使用 Windows API 建立 shell 使用者介面無法正確解釋的路徑 Do not use the following reserved names for the name of a file: CON, PRN, AUX, NUL, COM0, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT0, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9

Frequencies

  • Standard mode: 100 kilobits per second.
  • Fast mode: 400 kilobits per second.

時序

在 UM10204 6 Electrical specifications and timing for I/O stages and bus lines,需要時請直接查閱

  • tr SCL, SDA 上升或下降從 70% 到 30% 的時間 Max Standard 300 ns, Fast 300 ns
  • tLOW SCL 維持低電平 Min Standard 4.7 μs, Fast1.2 μs
  • tHIGH SCL 維持高電平 Min Standard 4.0 μs, Fast0.6 μs
  • tHD;DAT SCL 下降到SDA 狀態改變完成的時間 沒有最小時間規範
  • tSU;DAT SDA 狀態改變完成到 SCL 重新拉高的時間 Min Standard 250 ns, Fast 100 ns

Data Transfer

所有位元組均以 MSB 位元先移位的方式傳送 除了啟動和停止訊號外,SDA 線僅在時脈為低電平時變化

Frequencies

  • Standard mode: 100 kilobits per second.
  • Fast mode: 400 kilobits per second.

時序

在 UM10204 6 Electrical specifications and timing for I/O stages and bus lines,需要時請直接查閱

  • tr SCL, SDA 上升或下降從 70% 到 30% 的時間 Max Standard 300 ns, Fast 300 ns
  • tLOW SCL 維持低電平 Min Standard 4.7 μs, Fast1.2 μs
  • tHIGH SCL 維持高電平 Min Standard 4.0 μs, Fast0.6 μs
  • tHD;DAT SCL 下降到SDA 狀態改變完成的時間 沒有最小時間規範
  • tSU;DAT SDA 狀態改變完成到 SCL 重新拉高的時間 Min Standard 250 ns, Fast 100 ns

Data Transfer

所有位元組均以 MSB 位元先移位的方式傳送 除了啟動和停止訊號外,SDA 線僅在時脈為低電平時變化

RFC 1305

台灣 T1

  • tock.stdtime.gov.tw
  • watch.stdtime.gov.tw
  • time.stdtime.gov.tw
  • clock.stdtime.gov.tw
  • tick.stdtime.gov.tw 台灣的 NTP 由中華電信研究所時間與頻率國家標準實驗室維護