pondahai / simple51ide

simple IDE for AT89S52
4 stars 0 forks source link

編譯無法執行 #2

Open mihoxp opened 2 years ago

mihoxp commented 2 years ago

W10執行燒錄工具,設定SDCC和avrdude之後(最新版本),點選Build和Build & Upload都出現錯誤 while len(select.select([pipe_r], [], [], 0)[0]) == 1: OSError: [WinError 10038] 嘗試操作的對象不是通訊端。

pondahai commented 2 years ago

我修改了,測試看看 https://github.com/pondahai/simple51ide/commit/8bd57f66f6820cb1f8e2128a36dc558ce6d28b49

mihoxp commented 2 years ago

又有問題了 C:/MIDE/sdcc/bin/sdcc.exe --verbose -o "C:/Users/xxxxx/Downloads/simple51ide-main (2)/simple51ide-main/Examples/" "C:/Users/xxxxx/Downloads/simple51ide-main (2)/simple51ide-main/Examples/led.c" sdcc: Calling preprocessor...

sdcc: Generating code... Something wrong...

就卡在那邊不動...... 改用樹梅派沒有問題可以燒錄。

pondahai commented 2 years ago

目前已知問題: 原來是觸碰到leonardo當年(2012)的老問題 在windows下,leonardo的usb cdc需要觸發DTR之後,leonardo才會開始傳送。 應該是windows端驅動的特性 因為在linux與mac都不會有這個現象

當年的issue: https://github.com/arduino/Arduino/issues/1182

後來他們的解法是,在avrdude的燒錄器參數(-c)從本來的stk500v1改成arduino 可是,這個方法在89s52這邊沒有用 會導致燒錄過程失敗

或許 我應該在python程式中,直接實作avrdude的協定 因為 我在python裡面實驗,在windows10,對leonardo開port,是可以正常讀寫的

pondahai commented 2 years ago

我把燒錄協定寫進去程式裡面了 也就是說不呼叫外部avrdude 改成程式內部直開串列埠與avrisp溝通 因為協定內容是寫死的 目前暫時只能用於at89s52