AT32UC3L के साथ कस्टम PCB पर बूट लोडर काम करने में असमर्थ


12

मैंने हाल ही में एक क्लाइंट के लिए एक पीसीबी डिजाइन किया है, हार्डवेयर और सॉफ्टवेयर के साथ सब कुछ ठीक है (एप्लिकेशन काम कर रहा है जैसा कि माना जाता है)। अब हमें माइक्रोकंट्रोलर के अंदर प्रोग्राम को अपडेट करने की आवश्यकता का सामना करना पड़ रहा है, लेकिन चूंकि ये पीसीबी दुनिया भर में विभिन्न स्थानों पर स्थापित हैं, इसलिए बूटलोडर को स्थापित करना और एप्लिकेशन द्वारा उपयोग किए गए समान यूएआरटी का उपयोग करना सही होगा।

बोर्ड विवरण

  • AT32UC3L032
  • एक UART पहले से ही बोर्ड और पीसी के बीच संचार करता था
  • आवेदन के लिए I / Os का युगल
  • राज्य के एल.ई.डी.

प्रासंगिक पिन और विन्यास

PA01 # Used for entering ISP with high level

PA20 # Used for application and ISP UART
PA21 # Used for application and ISP UART

#define COM_USART               (&AVR32_USART2)
#define COM_USART_RX_PIN        AVR32_USART2_RXD_0_0_PIN
#define COM_USART_RX_FUNCTION   AVR32_USART2_RXD_0_0_FUNCTION
#define COM_USART_TX_PIN        AVR32_USART2_TXD_0_0_PIN
#define COM_USART_TX_FUNCTION   AVR32_USART2_TXD_0_0_FUNCTION
#define COM_USART_IRQ           AVR32_USART2_IRQ
#define COM_USART_BAUDRATE      115200

उपकरणों का इस्तेमाल

  • विंडोज एक्स पी
  • Atmel स्टूडियो 6.1
  • AVRONE प्रोग्रामर

कई घंटों की खोज के बाद, मैंने Atmel सॉफ्टवेयर फ्रेमवर्क DFU, ASF 3.14.0.834 में प्रदान किया है। यह आशाजनक लग रहा था, मैं प्रदान किए गए उपकरणों का उपयोग करके इसे अपने बोर्ड पर स्थापित करने में सक्षम था:

  • AVR32Studio 2.6.0
  • program_at32uc3l-uart-isp-1.0.1.cmd (ASF के साथ स्क्रिप्ट प्रदान की गई)
  • फ्लिप 3.4.7 (बैचस्प)

पहले, मैंने एएसएफ के साथ उपयोग किया .binऔर .datप्रदान किया, स्क्रिप्ट का उपयोग करके स्थापित किया। अब बैचशीप कमांड का उपयोग करके एप्लिकेशन अपलोड करने की कोशिश की जा रही है:

batchisp.exe -device at32uc3l032 -hardware RS232 -port COM1 -baudrate 115200 -operation erase f memory flash blankcheck loadbuffer myapp.hex program verify

लेकिन हमेशा हो रही:

Device selection.................... PASS
Hardware selection.................. PASS
Opening port........................ PASS
Synchronzing target................. FAIL    Timeout error.

मैंने UART से ऑसिलोस्कोप आरएक्स और TX के साथ परीक्षण किया है, डेटा बोर्ड में जा रहा है लेकिन पीसी को एक 27kHz वर्ग तरंग प्राप्त हो रही है (UART से डेटा नहीं हो सकता है क्योंकि कोई स्टॉप बिट या कुछ भी नहीं है, आवृत्ति भी शायद इसके लिए समान नहीं है 115200bps)।

अधिक शोध के बाद, मैंने इन मूल्यों को प्राप्त करने के लिए कॉन्फ़िगर किया है Word1और Word2फ़ाइल में at32uc3l-uart-isp_cfg-1.0.1.dat:

  • वर्ड 1: 0xE11E0024
  • वर्ड 2: 0x494F81AA

PA01आईएसपी में प्रवेश करने के लिए विकल्प के रूप में पिन का उपयोग करने के लिए ।

इसके अलावा, Atmel स्टूडियो 6.1 में DFU के स्रोत को लोड किया और देखा कि वे एक ही सीरियल पोर्ट कॉन्फ़िगरेशन का उपयोग नहीं कर रहे थे, इसलिए मेरे आवेदन के लिए उसी के साथ बदल गया। इसके अलावा DFU के मुख्य के अंदर कुछ एल ई डी टॉगल जोड़ा गया।

बोर्ड में बूटलोडर को अपडेट करने के बाद, कोई एल ई डी नहीं बदलता है, वही टाइमआउट, समान स्क्वायर वेव।

क्या मैं कुछ भूल रहा हूँ?



1
Atmel के टिकट के रूप में पोस्ट किया गया, यह देखेगा कि कौन वास्तव में मेरी मदद कर सकता है: D
अलेक्जेंड्रे लावोई

आप कौन से पिन का उपयोग कर रहे हैं (PAxx / PBxx)। मुझे ठीक से याद नहीं है, लेकिन बूटलोडर में प्रवेश करने के लिए आपको एक पिन को उच्च या निम्न (दो कॉन्फ़िगरेशन शब्दों के आधार पर) खींचना चाहिए। क्या आप पुष्टि कर सकते हैं कि आप एक बटन या समान धक्का दे रहे हैं?
टॉम एल।

@TomL।, PA01 (प्रश्न में जोड़ा गया) का उपयोग कर। उच्च / निम्न ... समान परिणाम दोनों के साथ की कोशिश की। यहां तक ​​कि अगर यह पिन JTAG के साथ प्रयोग किया जाता है, तो समस्या का कारण नहीं होना चाहिए।
अलेक्जेंड्रे लावोई

और आप UART के लिए किस पिन का उपयोग कर रहे हैं?
टॉम एल।

1
हम्म ठीक है, इसलिए यहां कुछ भी असामान्य नहीं है। क्या आप ट्रम्पोलिन कोड की जांच कर सकते हैं और यदि एप्लिकेशन फ्लैश स्टार्ट एड्रेस से सही तरीके से जुड़ा हुआ है (आपको इसे लिंकर में देखना चाहिए। क्या आप अपने लिंकर तर्कों को पोस्ट कर सकते हैं?
टॉम एल।

जवाबों:


1

यदि संभव हो तो AVR प्रोग्रामर और Arduino IDE का उपयोग करने का प्रयास करें। मुझे पता है कि यह एटी सीरीज माइक्रोकंट्रोलर के साथ अच्छी तरह से काम करता है।


0

उचित ट्रैम्पोलिन कोड के बिना JTAG का उपयोग करके ATMEL द्वारा भेजे गए BOOTLOADER को अधिलेखित कर देगा। तो पहले JTAG के साथ प्रोग्रामिंग करने के बाद आप सबसे अच्छे के लिए BOOTLOADER मिटा देते हैं।

बूटलोडर को काम करने की अनुमति देने के लिए फ़्यूज़ को सेट करना होगा जो कि JTAG प्रोग्रामर की डिफ़ॉल्ट सेटिंग्स आमतौर पर खराब हो जाती है।

इसे सुधारने के लिए आपको JOTAG द्वारा चिप में वापस BOOTLOADER (unprogrammed अभी तक चिप से लिया गया) प्रोग्राम करने और फ़्यूज़ को सही ढंग से सेट करने की आवश्यकता है।

मैंने JTAG का उपयोग बहुत पहले बंद कर दिया था क्योंकि BOOTLOADER + FLIP बहुत अधिक आरामदायक और तेज है। सुनिश्चित करें कि आप बिन / योगिनी के बजाय हेक्स का उपयोग कर रहे हैं और रीसेट स्थिति समाप्त होने के बाद BOOTLOADER स्थिति अभी भी सही है।

इस तरह मैं RS232 पर FLIP का उपयोग करता हूं:

avr32-objcopy -O ihex AT32UC3L064.elf AT32UC3L064.hex
Batchisp -device AT32UC3L064 -hardware RS232 -port COM1 -baudrate 115200 -operation onfail abort memory flash erase f blankcheck loadbuffer AT32UC3L064.hex program start reset 0

जहाँ avr32-objcopyAVRStudio बिन फ़ोल्डर से है और BatchispFLIP से है। आपको केवल अपने प्रोजेक्ट से मिलान करने के लिए फ़ाइल नाम और AVR चिप आईडी और COM को बदलना होगा।

यदि आपको इसकी आवश्यकता है तो आप USB का उपयोग कर सकते हैं:

avr32-objcopy -O ihex cpp_trampoline.elf AT32UC3A3256.hex
Batchisp -device AT32UC3A3256 -hardware USB -operation onfail abort memory flash erase f blankcheck loadbuffer AT32UC3A3256.hex program start reset 0

ट्रैम्पोलिन को लिंकर (प्रोजेक्ट प्रॉपर्टी) में सक्षम किया जाना चाहिए, यह इस तरह है कि मेरा कॉन्फ़िगरेशन कैसा दिखता है:

linker: -nostartfiles -Wl,--gc-sections -Wl,-e,_trampoline -mpart=uc3l032 -Wl,--gc-sections --direct-data --rodata-writable

मैं अभी भी AVR32 स्टूडियो 2.7.0 का उपयोग कर रहा हूं क्योंकि नए संस्करण घोड़े की गंदगी हैं ताकि उनमें विन्यास अलग हो सकता है।

[संपादित करें] अतिरिक्त जानकारी

के लिए UC3L0AVR32_PIN_PA20 कुछ है आर सी सामान्य घड़ी (32KHz होना चाहिए, लेकिन यह चिप से चिप के लिए काफी एक बहुत prescalers साथ अंशांकन बिना भिन्न होता है) चिप से जब तक अपने उद्देश्य के लिए बदल गया है GPIO तो कुछ और या ~ 27KHz घड़ी के साथ कोई संबंध नहीं है USART । Btw कि घड़ी 3.3V द्वारा संचालित है और भले ही चिप 1.98V कोर अच्छे के लिए तला हुआ है उत्पन्न करता है ...।

बूट लोडर की स्थिति AVR32_PIN_PA11रीसेट रिलीज से पहले शून्य पर सेट हो रही है (जब तक कि आप अपने फर्मवेयर में अपनी स्वयं की DFU शर्तों / आदेशों को लागू नहीं करते हैं ) तो एक संभावना एक आरसी बना रही है कि आप कम स्थिति में फैल जाते हैं, और इसे वापस चार्ज करने से पहले रीसेट करें ... या कुछ FLIP / FLOP गेट या जम्पर का उपयोग करें ...

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.