Freescale Kinetis KE - फ्लैश करने के लिए लेखन


12

मैं कई वर्षों के लिए कई माइक्रोकंट्रोलर और माइक्रोप्रोसेसरों का उपयोग कर रहा हूं, लेकिन अब मैं किनेटिस केई श्रृंखला (विशेष रूप से S9KEAZN64AMLC) द्वारा स्तब्ध प्रतीत होता हूं।

17 जनवरी, 2015 टीएल; डीआर:

फ्रीस्केल की पुष्टि है कि उनके Kinetis डिजाइन स्टूडियो सॉफ्टवेयर के v2.0.0 इस डिवाइस (अपने स्वयं के TRK-KEA64 eval बोर्ड सहित) के साथ काम नहीं करता है। वे फिलहाल कोडवर्ड एमसीयू वी 10.6 का उपयोग करने की सलाह देते हैं।

सेगर ने v4.96a जारी किया है ("a" महत्वपूर्ण है, मैं v4.96 का उपयोग कर रहा था) जो इस समस्या को ठीक करता है और आपको केडीएस के साथ सेगर जे-लिंक लाइट कोर्टेक्स एम डीबगर बोर्ड का उपयोग करने और पूर्ण कार्यक्रम / डिबग क्षमता रखने की अनुमति देता है।

इससे पहले कि Segger ने v4.96a जारी किया, मैं Freescale की सस्ती ($ 15) FRDM-KL25Z eval बोर्ड पर OpenSDA डिबगर को रीप्रोग्राम करके चिप को फ्लैश करने में सफल रहा, OpenSDA फर्मवेयर को फिर से शुरू करके USBDM (v4.10.6.240 का उपयोग करके) के साथ आता है । मैंने तब USBDM के स्टैंडअलोन "ARM प्रोग्रामर" सॉफ़्टवेयर का उपयोग किया। मैंने डिबगिंग को काम करने में ज्यादा समय नहीं दिया, क्योंकि मैं "ओल्डस्कूल" डिबगिंग में पर्याप्त कुशल हूं ताकि इसकी जरूरत न पड़े। कृपया सुनिश्चित करें कि आप ऑन-बोर्ड लक्ष्य KL25 में एक "सौम्य" प्रोग्राम को फ्लैश करते हैं या यह प्रोग्रामिंग में हस्तक्षेप कर सकता है क्योंकि ऑन-बोर्ड लक्ष्य KL25 की रीसेट लाइन अभी भी J11 कट के साथ OpenSDA डिबगर से जुड़ी हुई है (देखें विथ वेखम के ब्लॉग पोस्ट , नीचे दिया गया)।

एक बहुत ही बहुत धन्यवाद के लिए Erich स्टाइलर ने मुझे इस समस्या को हल करने में मदद की और ईमेल पर मेरे निष्कर्षों की पुष्टि की।

अब हमारे नियमित रूप से निर्धारित प्रश्न पर वापस:

मैंने एक बेवकूफ-सरल 3.3V ब्रेकआउट बोर्ड बनाया है। यह पीटीए पर कुछ एलईडी, पीटीसी पर एक UART कनेक्शन और SWD लाइनें उनके समर्पित लाइनों पर हैं। इस बोर्ड के बारे में शाब्दिक या मजाकिया कुछ भी नहीं है।

मैं Cortex-M (J-Link LITE CortexM-9 के लिए J-Link लाइट का उपयोग कर रहा हूं, https://www.segger.com/jlink-lite-cortexm.html देखें ) और OSX और Windows दोनों के तहत मुझे मिलता है एक ही परिणाम: जे-लिंक कमांडर उपयोगिता चिप की पहचान कर सकती है, मैं SRAM को पढ़ और लिख सकता हूं और मैनुअल रीडर्स के साथ परिधीय के साथ खेल सकता हूं और सही मेमोरी-मैप्ड I / O पते पर लिख सकता हूं। जब मैं डिवाइस को फ्लैश करने की कोशिश करता हूं, हालांकि, यह विफल रहता है।

$ JLinkExe
SEGGER J-Link Commander V4.94c ('?' for help)
Compiled Oct 31 2014 20:08:55
DLL version V4.94c, compiled Oct 31 2014 20:08:48
Firmware: J-Link Lite-Cortex-M V8 compiled Jul 17 2014 11:40:12
Hardware: V8.00
S/N: 518107921
Feature(s): GDB
VTarget = 3.332V
Info: Could not measure total IR len. TDO is constant high.
Info: Could not measure total IR len. TDO is constant high.
No devices found on JTAG chain. Trying to find device on SWD.
Info: Found SWD-DP with ID 0x0BC11477
Info: Found Cortex-M0 r0p0, Little endian.
Info: FPUnit: 2 code (BP) slots and 0 literal slots
Cortex-M0 identified.
Target interface speed: 100 kHz

J-Link>device skeazn64xxx2
Info: Device "SKEAZN64XXX2" selected (64 KB flash, 4 KB RAM).
Reconnecting to target...
Info: Found SWD-DP with ID 0x0BC11477
Info: Found SWD-DP with ID 0x0BC11477
Info: Found Cortex-M0 r0p0, Little endian.
Info: FPUnit: 2 code (BP) slots and 0 literal slots

J-Link>r
Reset delay: 0 ms
Reset type NORMAL: Resets core & peripherals via SYSRESETREQ & VECTRESET bit.

J-Link>erase
Erasing device (SKEAZN64xxx2)...

(...several second pause while it communicates with the MCU...)



****** Error: PC of target system has unexpected value after erasing sector. (PC = 0xFFFFFFFE)!
---------------------------------------------------------------------- Registers -------------------------------------------------------------------------------------
    PC   = FFFFFFFE
Current: R0   = 00F3E3BE, R1   = 00000001, R2   = 4004801C, R3   = 00000001
    R4   = 00000000, R5   = 00000000, R6   = 000000F4, R7   = 1FFFFD61
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Info: J-Link: Flash download: Total time needed: 2.174s (Prepare: 0.894s, Compare: 0.000s, Erase: 0.736s, Program: 0.000s, Verify: 0.000s, Restore: 0.542s)
ERROR: Erase returned with error code -5.

जे-लिंक लाइट पूरी तरह से ठीक है (मैं nRF58122 SoC को पढ़ सकता हूं और इसके साथ एक और कॉर्टेक्स- M0 प्रोसेसर लिख सकता हूं) और डिवाइस अन्यथा काम करने लगता है। मुझे पता है कि काइनेटिस को डिजीके से ताजा स्टॉक फैक्ट्री के रूप में अनलॉक किया गया है, लेकिन फिर भी JLinkExe में "किनेटिस अनलॉक" कमांड किसी भी त्रुटि या उपयोगी जानकारी के बिना है।

इस समय में मुझे यकीन है कि मैं कुछ बेवकूफी कर रहा हूं, लेकिन मैं इसके नुकसान पर हूं।

क्या किसी ने इन उपकरणों के साथ पहले काम किया है? आप उन्हें कैसे प्रोग्रामिंग कर रहे हैं?

walkthrough जोड़ने के लिए संपादित करें:

कुछ और जानकारी:

मैंने पढ़ा कि NMI # पिन को रीसेट से सक्षम किया गया है (और SIM_SOPT को पढ़कर इसे सत्यापित किया गया है) लेकिन यह भी सक्षम होने पर आंतरिक पुल-अप है। इस विशेष भाग पर पीटीबी 4 पिन 10 पर है जो मेरे डिजाइन में एक नो-कनेक्ट है। NMI पिन को अक्षम करने से कोई फर्क नहीं पड़ता है। RST # समान है; यह एक पुशबटन से जुड़ा है जो पिन को आधार बनाता है और जे-लिंक लाइट को भी जाता है लेकिन कोई बाहरी पुलअप नहीं है। यह इसलिए मायने नहीं रखता क्योंकि NMI # की तरह, RST # पिन में एक आंतरिक पुलअप है जो सक्षम है जब PTA5 को रीसेट होने के लिए कॉन्फ़िगर किया गया है।

अब क्लॉकिंग को देखते हुए ... रीसेट से, ICS, FLL और BDIV का क्लॉक सोर्स है ICS_C2 में 001 (रिसेट डिफ़ॉल्ट) पर सेट है। अगर मैं सही ढंग से समझूं, इसका मतलब है कि 32kHz आंतरिक थरथरानवाला को FLL द्वारा 1024 से गुणा किया जाता है और फिर 2 से विभाजित किया जाता है, जिससे ICSOUTCLK 32kHz * 1024/2 या 16.8MHz बनता है। मैं जे-लिंक सीएलआई के माध्यम से सत्यापित कर सकता हूं कि आईसीएल_एस पढ़ने से एफएलएल लॉक हो गया है:

J-Link>mem8 40064004 1
40064004 = 50

(लॉक और IREFST सेट हैं, यह सही है।)

मैं तब यह सत्यापित करने के लिए आगे बढ़ता हूं कि सिम में सिम नियंत्रक के लिए फ्लैश नियंत्रक के लिए सक्षम घड़ी है। मैं यह भी सुनिश्चित कर सकता हूं कि SIM_BUSDIV में BUSDIV शून्य पर सेट है, जिसका अर्थ है कि BUSCLK ICSOUTCLK के समान आवृत्ति है (अर्थात यह विभाजित नहीं किया जा रहा है):

J-Link>mem32 4004800c 1
4004800C = 00003000
J-Link>mem32 40048018 1
40048018 = 00000000

अब तक, सब कुछ ठीक लग रहा है। BUSCLK 16.8MHz है और फ्लैश कंट्रोलर क्लॉक गेटेड नहीं है।

अब फ्लैश कंट्रोलर पर चलते हैं। रीसेट से बाहर FCLKDIV शून्य है, और हमें 1MHz घड़ी की आवश्यकता है। KEA64RM में तालिका 18-2 से पता चलता है कि FDIV को 0x10 पर सेट किया जाना चाहिए।

रीसेट से बाहर:

J-Link>mem8 40020000 1
40020000 = 00

डिवाइडर की स्थापना और चीजों को सत्यापित करना अच्छा है:

J-Link>w1 40020000 10
Writing 10 -> 40020000
J-Link>mem8 40020000 1
40020000 = 90

FDIVLD सेट किया गया है और FDIV में सही मान दिखाया गया है।

बहुत आगे जाने से पहले, सुनिश्चित करें कि फ्लैश संरक्षित नहीं है:

J-Link>mem8 40020001 1
40020001 = FE

KEYEN = 11 (अक्षम) और SEC = 10 (असुरक्षित)। ठीक। आइए डिवाइस को सत्यापित करने का प्रयास रिक्त है:

J-Link>mem8 40020006 1
40020006 = 80
J-Link>w1 40020002 0
Writing 00 -> 40020002
J-Link>w1 4002000a 1
Writing 01 -> 4002000A
J-Link>mem8 40020006
J-Link>w1 40020006 80
Writing 80 -> 40020006
J-Link>mem8 40020006 1
40020006 = 83

यहां हम देखते हैं कि FSTAT में MGSTAT बिट्स इंगित करते हैं कि रिक्त चेक विफल हो गया है और यह भी कि गैर-सुधार योग्य त्रुटियां पाई गईं। अजीब। आइए इसे स्वयं मिटाने का प्रयास करें:

J-Link>w1 40020002 0
Writing 00 -> 40020002
J-Link>w1 4002000a 8
Writing 08 -> 4002000A
J-Link>w1 40020006 80
Writing 80 -> 40020006
J-Link>mem8 40020006 1
40020006 = 80

मिटा सभी आदेश सफल हुआ। अब आइए एक खाली जाँच करें:

J-Link>w1 40020002 0
Writing 00 -> 40020002
J-Link>w1 4002000a 1
Writing 01 -> 4002000A
J-Link>w1 40020006 80
Writing 80 -> 40020006
J-Link>mem8 40020006 1
40020006 = 80

अब ब्लैंक चेक ठीक है?

इस बिंदु पर मैं हार मानने के लिए तैयार हूं, इन प्रोटोटाइप पर नुकसान खाएं और एसटी से एक प्रोसेसर के साथ जाएं जहां मैंने पहले कभी इस तरह के मुद्दे नहीं उठाए हैं। काइनेटिस प्रलेखन पूरी तरह से पर्याप्त है लेकिन यह बहुत घना है और मुझे इसे शुरू करने में बहुत मुश्किल हो रही है। मैं मेमोरी पठन के माध्यम से I / O को विघटित कर सकता हूं और अन्य बाह्य उपकरणों को एक्सेस कर सकता हूं, लेकिन मैं अपने जीवन के लिए यह पता नहीं लगा सकता कि फ्लैश कंट्रोलर के साथ क्या गलत है। मैं 20 से अधिक वर्षों से माइक्रोस के साथ काम कर रहा हूं और इस तरह की कठिनाई कुछ ऐसी चीज है जिसका मैंने पहले कभी सामना नहीं किया है।

20150102 संपादित करें:

इसलिए अब भी यहां नहीं जाते। मैंने वास्तव में एक FRDM-KL25Z eval बोर्ड (DigiKey से $ 15) खरीदा है और OpenSDA डिबगर पर जेनेरिक CMSIS-DAP सॉफ्टवेयर डालकर इसे संशोधित किया है और कीथ वेकहम के ब्लॉग के अनुसार J11 को काटा है । मुझे एक ऑन-बोर्ड लक्ष्य (KL25Z) मिला है, जो एक साधारण प्रोग्राम चल रहा है, इसलिए यह रीसेट लाइन में हस्तक्षेप नहीं करता है और मैं अपने SKEAZN64 को OpenOCD के साथ देख सकता हूं और इसके साथ खेल सकता हूं, लेकिन दुर्भाग्य से यह इसे या तो प्रोग्राम नहीं कर सकता है। Kinetis Design Studio (KDS) सॉफ़्टवेयर मेरे Kinetis को फ्लैश नहीं करेगा क्योंकि यह कहता है कि यह संरक्षित है और मुझे एक बड़े पैमाने पर मिटाने की आवश्यकता है, लेकिन OpenOCD (KDS के हिस्से के रूप में) को यह पता नहीं लगता है कि यह कैसे करना है। OpenOCD मैं अपने मैक पर बनाया गया git मास्टर संस्करण Kinetis को समझता है, लेकिन विशिष्ट KEA श्रृंखला को नहीं, इसलिए मैं एक वर्ग में वापस आ गया हूं।

J- लिंक पर वापस जा रहा है ...

@AdamHaun के पास वास्तव में एक अच्छा सुराग था, और अगर मैंने J-Link रीसेट प्रकार (rsettype कमांड) को '6' (Kinetis) टाइप करने के लिए सेट किया है, तो J- लिंक कोर रीसेट करने के बाद वॉचडॉग को अक्षम करने वाला है। WDOG_CS1 रजिस्टर (0x40052000) को देखकर ऐसा लगता है कि यह मामला है, लेकिन अभी भी कोई पासा नहीं है। एरेस ऑपरेशन 0xfffffffe और त्रुटि कोड -5 पर पीसी के साथ रेल से दूर जाने के लिए लगता है, और एक "अनलॉक किनेटिस" कमांड केवल तभी काम करता है जब मैं SIM_SOPT (32-बिट 0x00000008 से 0x40048004 लिखकर) रीसेट पिन को अक्षम करता हूं। दुर्भाग्य से अगर मैं करता हूं कि सीपीयू को कभी भी फिर से रोका नहीं जा सकता है, तो संभवतः क्योंकि एसडब्ल्यूडी इंटरफ़ेस एसडब्ल्यूडी डीएपी को ज्ञात स्थिति में मजबूर करने के लिए रीसेट लाइन का उपयोग नहीं कर सकता है।

20150103 संपादित करें:

मैं एलईडी लग रहा है

दोहराएं

मैं एलईडी लग रहा है

TL; DR संस्करण: FRDM-KL25Z बोर्ड पर USBDM छवि डालें (सभी अपने आप में एक कहानी), बोर्ड पर परीक्षण भेजने के लिए ARM प्रोग्रामर स्टैंडअलोन ऐप का उपयोग करें। शक्ति चक्र और वायली।

लंबा वर्जन बाद में आएगा। अब मेरे पास इस KEAZN64 बोर्ड के लिए सॉफ्टवेयर लिखने और डिबग करने के लिए 48h से कम है, इसके साथ जाने वाले अन्य सॉफ़्टवेयर को संशोधित / परीक्षण करना और किसी अन्य क्लाइंट के लिए कुछ दस्तावेज़ों पर काम करना। मैं वादा करता हूं कि मैं एक विस्तृत उत्तर के साथ इस प्रश्न को अपडेट करूंगा । मैं सिर्फ अपनी सफलता को साझा करना चाहता था। आपकी सहायता के लिए हर कोई धन्यवाद देता है। मुझे मॉड्स के साथ बोलना पड़ सकता है क्योंकि मैं वास्तव में आप में से कुछ को विशेष रूप से इनाम देना चाहूंगा।


बेवकूफ सवाल, लेकिन क्या आप सुनिश्चित हैं कि आप सही जे-लिंक लाइट का उपयोग कर रहे हैं? वे एक मंच तक सीमित हैं। गलत स्वयं का उपयोग नहीं किया है, लेकिन यह है कि मैं कैसे असफल होने की उम्मीद करूँगा।
स्कॉट सीडमैन

कि जे-लिंक को देखते हुए और kinetis यहाँ टैग वास्तव में कोई सामग्री (सिर्फ एक अन्य प्रश्न) है, तो आप शायद कुछ निर्माता की सहायता मंच या ई-मेल, फोन समर्थन आदि खोजने की कोशिश करनी चाहिए forum.segger.com शायद?
फिस्स

समुदाय. freescale.com/community/kinetis एक अन्य स्थान दिखाई देता है जहाँ आप लोगों को इसके बारे में जानकार हो सकते हैं। समुदाय
Fizz

1
: @RespawnedFluff मैं वास्तव में Kinetis मंचों पर एक लगभग समान सवाल है community.freescale.com/message/466015 । e.se की FAR अधिक पहुंच है और मैं इस समुदाय / साइट को पसंद करता हूं ताकि मुझे लगा कि यहां भी पूछने के लिए यह चोट नहीं पहुंचेगी।
akohlsmith

1
@RespawnedFluff विशिष्ट जे-लिंक संस्करण को शामिल करने के लिए प्रश्न का अद्यतन करें। यह ओईएम-विशिष्ट एक नहीं है और सीधे "किसी भी कॉर्टेक्स- M0 / M0 + / M1 / ​​M3 / M4 / M7 कोर समर्थित" बताता है।
akohlsmith

जवाबों:


3

मुझे वास्तव में आपकी प्रक्रिया में कोई तार्किक त्रुटि नहीं मिल सकती है, लेकिन यहाँ कुछ सुझाव दिए गए हैं:

  • एक FTMRH_FERSTAT रजिस्टर (4002_0007h पर) भी है। यह आपको बताने वाला है कि क्या गलत हुआ ... लेकिन केवल समानता (या दोहरी समानता) के मामले में। मुझे यकीन नहीं है कि यह मामले में कुछ भी दर्ज करेगा या त्रुटियों को मिटा देगा, लेकिन शायद जांच करने लायक है।

  • केईए दस्तावेज़ में यह भी उल्लेख किया गया है कि फ्लैश त्रुटियों से एक बाधा उत्पन्न हो सकती है (अनुभाग "18.3.5 फ्लैश और ईप्रोम इंटरप्ट")। मुझे नहीं पता कि ऐसा क्या होता है जब SEGGER इसे मिटा देता है, लेकिन यह एक प्रशंसनीय स्पष्टीकरण है कि FSTAT रजिस्टर में ध्वजांकित त्रुटियों को देखने के बाद से पीसी भी क्यों बदलता है। दुर्भाग्य से बाधा नियंत्रक के लिए KEA प्रलेखन अनुभाग ("3.3.2 नेस्टेड वेक्टरड इंटरप्ट कंट्रोलर (एनवीआईसी) कॉन्फ़िगरेशन") पूर्ण प्रलेखन के लिए एआरएम की वेबसाइट की दिशा में अस्पष्ट संकेत कर रहा है। अगर फ्लैश डिफॉल्ट के लिए डिफॉल्ट इंटरप्ट हैंडलर सेट अप (बूट पर) हो तो मैं यह पता नहीं लगा सकता था।

  • आपने केवल सेक्टर स्तर पर मैन्युअल रूप से मिटा दिया है, इसलिए मैन्युअल रूप से प्रयास करें (जैसा कि स्वयं उपयुक्त रजिस्टर लिखकर) एक पूर्ण फ्लैश मिटा आदेश जारी करें; एकल कमांड में ऐसा करने का एकमात्र तरीका मैनुअल की धारा 18.3.10.10 (पृष्ठ 246) में "अनसिक्योर फ्लैश कमांड" है। यह दोनों डिवाइस को "असुरक्षित" करेगा और एक पूर्ण फ्लैश और EEPROM मिटा देगा। आप FSTAT बिट (CCIF) को देखने के लिए देख सकते हैं कि यह कब पूरा हुआ है और बाद में फिर से त्रुटि झंडे की जाँच करें। संपादित करें: मैनुअल, डुह में "18.3.9.7 मिटाएँ सभी ब्लॉक कमांड" अनुभाग भी है।

  • एक कम बस घड़ी की आवृत्ति का प्रयास करें। प्रलेखन के अनुसार 0.8 मेगाहर्ट्ज से ऊपर की कोई भी चीज काम करती है। मैं यह सुझाव दे रहा हूं क्योंकि फ्रीस्केल मंच पर एक धागा था जहां एक बाहरी फ्लैश ने ठीक काम किया, लेकिन एक निश्चित आवृत्ति के ऊपर नहीं जो अभी भी ठीक-दस्तावेज वाली सीमा में था। इसलिए यह संभव है कि चिप में फ्लैश नियंत्रक परतदार हो और बताई गई आवृत्तियों की पूरी श्रृंखला पर काम न कर सके।

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

यह वह सब है जो मैं इस पृष्ठ पर दूसरों द्वारा नहीं कहा गया था कि डिबगिंग सुझावों के संदर्भ में सोच सकता हूं।

20150103 संपादित करें:

(मेरी टिप्पणियों और विस्तार से यहाँ सामग्री स्थानांतरित)

ऐसा लगता है कि सभी कैनेटीस सीरीज सभी फ्लैशर्स के साथ आधिकारिक तौर पर कम से कम नहीं हैं। काफी नई ईए श्रृंखला जिसे आप वास्तव में उपयोग कर रहे हैं, वह केवल फ़्रीसेल के स्वयं / ओईएम साइक्लोन मैक्स फ्लैशर द्वारा आधिकारिक तौर पर समर्थित प्रतीत होती है; यह केवल ईए सीरियल्स के लिए फ्रीस्केल के पेज पर सूचीबद्ध है । अब दी गई, KL0 जैसी पुरानी काइनेटिस के लिए सूची एक SEGGER सहित अधिक लंबी है । मुझे नहीं पता कि यह ईए श्रृंखला के लिए अन्य फ्लैशर्स के परीक्षण की कमी के कारण है या अगर वास्तव में कुछ प्रोग्रामिंग क्विक शामिल है जो केवल उनके साइक्लोन मैक्स के बारे में जानते हैं। मैं उम्मीद कर रहा था कि शायद यह अन्य फ्लैशर्स को सूचीबद्ध करने पर फ़्रीस्केल धीमा है, लेकिन जे-लिंक मैनुअल की जांच करने पर (उम्मीद है कि सही एक), वहाँ कोई Kinetis ई या ईए श्रृंखला सूचीबद्ध नहीं है (पी। 249) या तो परीक्षण के रूप में, लेकिन केवल Kinetis K10 से K60 उपकरणों (और कुछ पुराने MAC7 के)।

ध्यान देने योग्य बात यह है कि साइक्लोन मैक्स के लिए PEDDrv सॉफ्टवेयर / फर्मवेयर में सर्विस पैक (v10.3) दिनांक 3/20/2014 है, जो "MKE04Z64, MKE04Z128, MKE06Z64, MKE06Z128, SKEAZ64 और SKEAZ128 डेरिवेटिव के लिए समर्थन जोड़ता है ।" एक और सुराग है कि किनेटिस के लिए फ्रीस्केल का खुद का ओपन-सोर्स बूटलोडर / फ्लैश लोडर सॉफ्टवेयरहाल ही में 12/2014 में और भी अधिक अद्यतन किए जाने के बावजूद, किसी भी E या EA [उप] श्रृंखला उपकरणों को समर्थित के रूप में सूचीबद्ध नहीं करता है। इसलिए मुझे लगता है कि ई 10 / ई-सीरीज़ और के 10 जैसे अन्य केनेटिस के बीच चमकती के बारे में पर्याप्त रूप से कुछ अलग है, हालांकि मुझे नहीं पता कि वास्तव में क्या अंतर है। इसलिए मुझे लगता है कि ईए फ्लैशिंग की अपेक्षा करता है कि वह किसी भी चीज के साथ स्वचालित रूप से काम करे लेकिन साइक्लोन मैक्स शायद इस बिंदु पर अवास्तविक है। आप अंततः यह पता लगाने में सक्षम हो सकते हैं कि ईए-सीरीज़ के प्रलेखन से "नंगे धातु" स्तर (डायरेक्ट रजिस्टर कमांड्स) में यह कैसे किया जा सकता है, लेकिन मैं मानता हूं कि प्रलेखन बहुत ही अप्रिय है; यह निश्चित रूप से किसी भी कदम-दर-चरण निर्देशों का अभाव है केवल एक संदर्भ मैनुअल है। Freescale के ओपन-सोर्स बूटलोडर / फ्लैश लोडर ने E / EA श्रृंखला का समर्थन किया, आपने '

एफआरडीएम-केएल 25 जेड (जो किनेटिस एल सीरीज के साथ आता है) के साथ आपका प्रयोग एक ही दिशा में इंगित करता है, यानी आप ईए-सीरीज के साथ एल-सीरीज को स्वैप नहीं कर सकते हैं और इस मामले में उसी फ्लैशर (ओपनएसडीए) का उपयोग कर सकते हैं।

और यदि आप कीथ (ब्लॉगर) की तरह हैं, जो एक प्रोग्रामर के लिए "सोचते हैं [$] $ 100 डॉलर हास्यास्पद है", तो आप शायद उस चक्रवात पर $ 900 + छोड़ने के परिप्रेक्ष्य से प्रसन्न नहीं होंगे। मुझे नहीं पता कि फ़्रीस्केल अपने मोटर वाहन ग्राहकों को भागने के उद्देश्य से ऐसा करता है या क्या ... यह निश्चित रूप से अजीब लग रहा है कि अधिकांश काइनेटिस श्रृंखला के लिए टूलिंग ई / ईए के साथ काम नहीं करता है।

यह भी जान लें कि OpenSDA का फ्लैशिंग फ़ंक्शन केवल MS Windows के तहत काम करता है , जाहिरा तौर पर।

यदि आप अधिक बोर्ड्स (हैकिंग) का प्रयास करने के लिए तैयार हैं, तो एक ई-श्रृंखला किनेटिस के साथ एक बेहतर विचार हो सकता है, जैसे FRDM-KE02Z (डिजी-की में $ 13); OpenSDA का भी उपयोग करता है, इसलिए यह हैक करने योग्य हो सकता है। वे ईए-सीरीज के साथ बोर्ड नहीं बनाते / बेचते हैं, जहां तक ​​मैं बता सकता हूं। हालाँकि, ऐसा लगता है कि आप एक OpenSDA प्रोसेसर / बोर्ड का उपयोग अपने स्वयं के बोर्ड पर एक से भिन्न काइनेटिस प्रोग्राम को करने के लिए नहीं कर सकते हैं , भले ही दोनों प्रोसेसर एक ही (जैसे L) श्रृंखला में हों, लेकिन विभिन्न संख्याएँ। दुर्भाग्य से OpenSDA में "ओपन" का मतलब केवल SDA कल्पना खुला है, न कि वे स्रोत कोड को ओपन-सोर्स के रूप में देते हैं; इसलिए मुझे E-Series फ़्लैश प्रोग्राम करने के लिए सोर्स कोड भी नहीं मिल रहा है। जाहिर है, मैं इसके बारे में केवल आधा-सही हूं। OpenSDA v1 ओपन-सोर्स नहीं है, लेकिन v2 है

तो यहाँ OpenSDAv2 पर न्यूनता है । यह मूल रूप से सिर्फ एक CMSIS-DAP / mbed बूटलोडर और फ्लैशर है। तो इसमें एक जैसी विशेषताएं नहीं हो सकती हैं या समान चिप का समर्थन v1 ... और यह वास्तव में ऐसा ही होता है क्योंकि flash_features.h किसी भी MKE (Kinetis E- श्रृंखला) को सूचीबद्ध नहीं करता है अकेले SKE (EA- श्रृंखला) दें उपकरण। सारांश में, ईए श्रृंखला के लिए फ्रीस्केल के प्रस्ताव को लगता है: हमारे $ 900 साइक्लोन फ्लैशर या शुभकामनाएं खरीदें जो कि हमारे द्वारा जारी किए गए खुले स्रोत के जो भी अधूरे बिट्स हैं, उनसे अपना स्वयं का लेखन करें।

हालांकि यह पता चला है कि एक खुला स्रोत परियोजना है जो कम से कम ई-श्रृंखला काइनेटिस, अर्थात् यूएसबीडीएम को प्रोग्राम कर सकती हैइसके चैंज से संबंधित बिट है:

V4.1.6.140 (अप्रैल 2014)

अतिरिक्त काइनेटिस उपकरण (MKE04, MKE06, MK64F)

  • MKE उपकरणों के लिए फिक्स (मास इरेज़ के बाद प्रोग्राम करने में विफल)

और उस लॉग प्रविष्टि के आधार पर, यह निश्चित रूप से ई-श्रृंखला quirky हैं प्रकट होता है। ईए-सीरीज़ (एसकेई) के लिए कोई प्रत्यक्ष समर्थन नहीं है, लेकिन यदि आप अपने स्वयं के फ्लैशर को हैक करना चाहते हैं तो कोड आधार संभवतः आपका सबसे अच्छा दांव है; या शायद आप ईए-सीरीज़ (SKE) समर्थन को जोड़ने के लिए USBDM के लेखक को मना सकते हैं। USBDM के लिए हार्डवेयर के रूप में यह पता चला है कि आप FRDM-KL25Z का उपयोग कर सकते हैं जिसे आपने पूर्व में प्राप्त कर लिया है; लेकिन आपको अभी भी SKE चिप्स को सपोर्ट करने के लिए USBDM सॉफ्टवेयर को हैक करना होगा।

USBDM के लिए मास्टर कॉन्फ़िग फ़ाइल नहीं बल्कि मुश्किल लगता है। USDBM में अलग-अलग एमकेई श्रृंखला उपकरणों के लिए अलग-अलग फ्लैशर्स (कोड बेस) का उपयोग किया जाता है: एमकेई04 और एमकेई06 के लिए "एफटीएमआरई" नामक कुछ का उपयोग किया जाता है, लेकिन एमकेई 02 के लिए "एफटीएमआरएच" का उपयोग किया जाता है। अपने आप को दो कोड आधारों पर संक्षेप में देखने के बाद, आप निश्चित रूप से FTRMH कोड आधार चाहते हैं कि FTRME एक न हो। उत्तरार्द्ध में आपके SKEA64 डिवाइस की तुलना में एक अलग FTMRH संरचना है, उदाहरण के लिए, क्लॉक डिवाइडर पहले नहीं बल्कि 4 वें क्षेत्र है। FTRME ने बस FIDV को 0x17 = 24Mhz पर सेट किया है, जो आपकी चिप के लिए सीमा से बाहर लगता है (KEA64 मैनुअल में पृष्ठ 224 अधिकतम 20Mhz बताता है)। FTMRH इसे 0x0F = 16Mhz (जैसे आप करते हैं) पर सेट करता है, जो ठीक लगता है।

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

इसके अलावा कि USDBM स्रोत कोड से मैं भविष्यवाणी कर सकता हूं कि कोई भी तरीका नहीं है जब तक कि आपका SEGGER अपने SKEA को सही ढंग से फ्लैश नहीं कर सकता है जब तक कि उसे अपना फर्मवेयर अपडेट पहले न मिले। मैं ऐसा क्यों कहुं? क्योंकि USDBM के FTMRH कोड आधार का उपयोग वहां के एक उपकरण, MKE02 द्वारा किया जाता है, जिसे आपका SEGGER या तो इसके बारे में कुछ भी नहीं जानता है (इसके मैनुअल के आधार पर)। अन्य, अधिक सामान्य उपकरण जैसे किनेटिस एल और के सीरीज़ "एफटीएफए" कोड के आधार पर एक अलग यूएसडीबीएम फ्लैशर का उपयोग करते हैं। यदि आप एफटीएफए के कोड को देखते हैं , तो फ़्लैश कंट्रोलर रजिस्टर संरचना (0x40020000 पर शुरू) भी इनके लिए अलग है; पहला क्षेत्र एक घड़ी विभक्त भी नहीं है, लेकिन स्टेट रजिस्टर, आदि "ग्रेट" फ़्रीसेल के लिए असंगत डिवाइस बनाने का तरीका है ... लेकिन फ्लैशर निर्माताओं के लिए एक वरदान, कोई संदेह नहीं है।


1
FERSTAT को कुछ भी उपयोगी नहीं है जैसा कि आपको संदेह है; मैं इस पूरे पराजय में इसे जल्दी आजमाता था। सभी फ़्लैश व्यवधान डिफ़ॉल्ट रूप से अक्षम हैं, लेकिन मैंने यह देखने के लिए जांच की कि क्या यह समस्या का हिस्सा था। वहां कोई पासा भी नहीं। मेरे पास दो बोर्ड हैं और वे दोनों एक ही तरह से कार्य करते हैं, लेकिन मैंने वर्षों से सीखा है कि यह गायब समय है कि सिलिकॉन वास्तव में दोष है, यही कारण है कि मैं अपने बालों को यहाँ फाड़ रहा हूं। :-)
akohlsmith

मैं आवृत्ति छोड़ने की कोशिश करूँगा; रीसेट से बाहर की चूक 16.78MHz बस घड़ी (32kHz * 1024/2) के लिए प्रतीत होती हैं, यही कारण है कि मैंने 0x10 (32kHz * 1024/2/16) का एक फ्लैश घड़ी डिवाइडर चुना है जो कि अनुमान के भीतर है लेकिन शायद किनारे से थोड़ा सा पास)
akohlsmith

1
आपके अन्य सुझाव, सभी (0x8) को मिटाने के बजाय असुरक्षित कमांड (0xb) के बारे में ... यह सफल होता है, लेकिन मैं सीपीयू को बाद में रोक नहीं सकता और मैं बाद में फ्लैश में कुछ भी प्रोग्राम नहीं कर सकता।
akohlsmith

मैं इस इंटरनेट अजनबी की मदद करने के प्रयास में आपके सभी प्रयासों के लिए आपको धन्यवाद देता हूं। मैं यह समझने के लिए संघर्ष कर रहा हूं कि क्यों इस चिप का उपयोग करना बहुत कठिन है, यहां तक ​​कि समर्थित प्रोग्रामर (जे-लिंक और सीएमएसआईएस-डीएपी) और फ़्रीस्केल के अपने विकास के वातावरण और उपकरणों का उपयोग करते समय भी। यह मेरे दिमाग को उड़ा रहा है।
akohlsmith

आपके विस्तृत शोध और निरंतर मदद के लिए धन्यवाद। वास्तव में यह वही है जो मैंने किया था: USBDM फर्मवेयर और स्टैंडअलोन एआरएम फ्लैशर के साथ FRDM-KL25Z का उपयोग करना। इस उपकरण में मेरी निमिष एलईडी परीक्षण मिला है। क्या उत्सुक है कि Segger समर्थित CPU सूची में स्पष्ट रूप से SKEAZN64xxx2 का उल्लेख है, लेकिन यह काम नहीं करता है।
एकहेलस्मिथ

2

क्या आपने यह कोशिश की: सीगलर जे-लिंक के साथ फ्लशिंग और अनलासिंग फ्लेश

कथित तौर पर आपको निम्न करना होगा:

Segger J-Link के साथ संरक्षित FLASH क्षेत्रों को फिर से प्रोग्राम करने के लिए, मुझे डिवाइस को अनलॉक करने और बड़े पैमाने पर मिटाने की आवश्यकता है। इसके लिए, जे-लिंक कमांडर उपयोगिता है जो डिवाइस को असुरक्षित और मिटाने के लिए एक कमांड लाइन इंटरफ़ेस है। केवल मिटाने के लिए, जे-फ्लैश (और लाइट) एक बहुत ही उपयोगी उपकरण है, विशेष रूप से एक 'क्लीन' डिवाइस मेमोरी पाने के लिए।

मुझे जो दिलचस्प लगा वह यह है कि आपको इसे अनलॉक करना है और अगले चरण में इसे मिटाना है यदि आप चाहते हैं कि अनलॉक स्थायी हो:

लेकिन ऐसा लगता है कि मुझे एक अनलॉक करने की आवश्यकता है, इसके बाद इसे स्थायी बनाने के लिए मिटा दिया जाएगा। डिवाइस को मिटाने के लिए, मैं उसी कमांड लाइन उपयोगिता का उपयोग कर सकता हूं। लेकिन मुझे पहले डिवाइस का नाम निर्दिष्ट करने की आवश्यकता है, और फिर मैं इसे मिटा सकता हूं (उदाहरण के लिए KL25Z):

EDIT1: गलत डेटा जोड़ा गया।

EDIT2: क्या आप शायद फ्लैश सिक्योरिटी (FSEC) रजिस्टर पढ़ सकते हैं? क्या आप ने कोशिश की?

EDIT3: काइनेटिस सिक्योरिटी और फ्लैश प्रोटेक्शन फीचर्स का उपयोग करके, रेव। 1, 6/2012

डीबगर / जेटीएजी डीबगर्स और जेटीजी टूल्स के माध्यम से बड़े पैमाने पर मिटाए जाने पर प्रोसेसर के सुरक्षित होने पर डिवाइस तक बहुत सीमित पहुंच होती है। केवल रजिस्टर जो JTAG के माध्यम से एक्सेस किया जा सकता है, वह MDM-AP स्थिति और नियंत्रण रजिस्टर हैं। डिबग टूल को असुरक्षित भागों की अनुमति देने के लिए, एमडीएम-एपी कंट्रोल रजिस्टर के बिट 0 को प्रोसेसर के बड़े पैमाने पर मिटाने का अनुरोध करने के लिए सेट किया जा सकता है। सुरक्षा को निष्क्रिय करने के लिए इस विधि का उपयोग करने के लिए, FSEC [MEEN] को 10 से अधिक मान के लिए सेट किया जाना चाहिए ताकि बड़े पैमाने पर क्षमता को नष्ट किया जा सके। यदि बड़े पैमाने पर मिटाया गया है, तो FSEC [MEEN] = 10 है, तो बड़े पैमाने पर मिटाए जाने के अनुरोध को फ़्लैश द्वारा अनदेखा किया जाएगा और इस पद्धति का उपयोग करके डिवाइस को असुरक्षित नहीं किया जा सकता है। कई डीबगर्स स्वचालित रूप से एमडीएम-एपी स्थिति रजिस्टर के बिट 2 का उपयोग करेंगे यह निर्धारित करने के लिए कि क्या कनेक्शन स्थापित करने का प्रयास करते समय डिवाइस सुरक्षित है। डिबगर पॉप-अप विंडो का उपयोग यह चेतावनी देने के लिए किया जा सकता है कि डिवाइस सुरक्षित है और पूछें कि क्या डिवाइस को असुरक्षित करने के लिए बड़े पैमाने पर मिटा दिया गया है। एक बार बड़े पैमाने पर मिट जाने और सत्यापित होने के बाद, सुरक्षा अक्षम हो जाएगी। कुछ डीबगर स्वचालित रूप से फ्लैश कॉन्फ़िगरेशन फ़ील्ड को एक असुरक्षित स्थिति में डालने के लिए बड़े पैमाने पर मिटाए जाने के बाद, FSEC = 0xFE को प्रोग्राम कर सकते हैं।

एमडीएम-एपी रजिस्टर को पढ़ने / लिखने की कोशिश करते समय विभिन्न किनेटिस परिवारों का उल्लेख करने वाले विभिन्न पदों के लिए भी मैं स्तब्ध था।

EDIT4: क्या आपने SWD_DIO पर एक मजबूत पुल-अप जोड़ने की कोशिश की? यह अंधेरे में एक शॉट है, लेकिन फ्रीस्केल इसे फिर से शामिल करता है।


क्रॉस-चेक करने और सुझाव देने में मदद करने के लिए समय निकालने के लिए धन्यवाद। FTMRH_FSEC (0x40020001) 0xfe का मान लौटाता है, जो आपके लिए जितना अनलॉक / असुरक्षित है उतना ही है। अगर मैं 0x0000400c पर फ्लैश पढ़ता हूं, तो मैं सुरक्षा बिट्स को समान मान दिखाते हुए भी देख सकता हूं (जो कि जहां एफएसईसी पावर-ऑन रीसेट पर मान प्राप्त करता है): जे-लिंक> मेम 8 400 10 00000400 = एफएफ एफएफ एफएफ एफएफ एफएफ एफएफ एफएफ एफएफ FF FF FF FF FF FE FF
akohlsmith

जे-लिंक में एक विशिष्ट कैनेटीस वैल्यू (6) के साथ "rsettype" कमांड है जो वॉचडॉग टाइमर को रीसेट करने में अक्षम करता है। यह प्रोसेसर को रोक नहीं सकता है, लेकिन मैं "h" कमांड के साथ ऐसा कर सकता हूं। मैं यह भी देख सकता हूं कि अगर मैं rsettype 6 का उपयोग नहीं करता हूं, तो वॉचडॉग रजिस्टर रिपोर्ट करता है कि वॉचडॉग सक्षम है, जो प्रलेखन के साथ मेल खाता है।
akohlsmith

मैं पुल-अप की कोशिश करूँगा, आपके द्वारा कोशिश की गई दोनों बोर्ड्स में यह नहीं है और अगर यह काम नहीं करता है, तो जिंक नोकिया है।
iggy

मैंने पुलअप (4.7k, यह सुनिश्चित करने की कोशिश नहीं की कि "मजबूत" कितना मजबूत होना चाहिए) लेकिन इससे कोई फर्क नहीं पड़ा।
akohlsmith

4k7 ठीक है। आपने वह सब किया जो आप कर सकते थे। इस बिंदु पर FRDM-KL25Z के साथ व्यवहार को सत्यापित करें और फिर जिंकल वालों को 1 मिलियन टिकट भेजें।
gyागी

1

आपको पहले प्रोसेसर को रोकना होगा। यह स्पष्ट है कि आपको एक रनिंग प्रोसेसर का लक्षण मिलता है। मैं ओपनकाड का उपयोग करता हूं; डिवाइस को फ्लैश करने से पहले मैं "रीसेट हाल्ट" कमांड का उपयोग करता हूं। यह "पड़ाव" "रीसेट" का एक उपकेंद्र है, जिसे रीसेट करने के तुरंत बाद रोक दिया जाता है, जबकि एक स्टैंडअलोन हॉल्ट कमांड भी है।

तो एक "रीसेट हाल्ट" कमांड की तलाश करें, बस एक पड़ाव पर्याप्त नहीं होगा क्योंकि आपको मुझे लगता है कि वैक्टर के प्रारंभिक-प्रारंभिककरण की स्थिति में जाना होगा।


आपकी टिप्पणी के लिए धन्यवाद, लेकिन segger पहले सीपीयू को रोक देता है। मैंने बिना किसी बदलाव के इन कमांड्स को जारी करने से पहले सीपीयू को मैन्युअल रूप से रोकने की भी कोशिश की है। मुझे अपने प्रश्न में यह स्पष्ट करना चाहिए था।
akohlsmith

मैंने ध्यान नहीं दिया कि आप कह रहे थे कि वैक्टर के आरंभ से पहले एक पड़ाव आवश्यक हो सकता है। इसे देखते हुए, लेकिन मुझे यह समझने में परेशानी हो रही है कि यह आवश्यक क्यों होगा। संकेत के लिए धन्यवाद, हर बिट मदद करता है
akohlsmith

1

मैंने अभी तक इसका उल्लेख नहीं किया है, इसलिए मैं आगे जाऊंगा और अनुमान लगाऊंगा कि समस्या यह है कि इस कैश में रीसेट पर सक्षम है। यह "अजीब" व्यवहार के अनुरूप है जिसे आपने खाली चेक के साथ देखा था। अंतर्निहित फ़्लैश अपडेट किया गया था लेकिन कैश नहीं था। इसे ठीक करने, को लिख कर दोनों डेटा और शिक्षा कैश बंद करने के लिए MCM_PLACRपर F000_300Chहै और यह भी कैश को साफ़ के रूप में आप ऐसा करते हैं। इसी अजीब व्यवहार से सेगर को भी भ्रम हो सकता है।


यह बहुत अच्छा सुझाव था। रीसेट पर, MCM_PLACR 0x00000850 के रूप में पढ़ता है, जो थोड़ा अजीब है (डेटा कैश अक्षम है, लेकिन दस्तावेज में बिट्स 6 और 4 आरक्षित हैं)। मैंने सब कुछ (सट्टा, नियंत्रक कैश, अनुदेश कैशिंग) को अक्षम करने का प्रयास किया और फिर 0x0000bc00 लिखकर कैश को साफ़ किया; यह 0x0000b850 वापस पढ़ा, लेकिन व्यवहार में कोई बदलाव नहीं।
akohlsmith

जब आप अंततः इस समस्या को हल करते हैं तो मुझे सुनने में बहुत दिलचस्पी होने वाली है। इस बीच, इस चिप निश्चित रूप से है नहीं किसी भी समय जल्दी ही मेरी डिजाइन में से किसी में होने जा रहा। आपके दर्द के लिए क्षमा करें, लेकिन दिलचस्प सवाल साझा करने के लिए धन्यवाद।
एडवर्ड

0

चूंकि त्रुटि संदेश पीसी मान के बारे में है, ऐसा लगता है कि सीपीयू कहीं न कहीं रेल से जा रहा है। यह एक लंबा शॉट है, लेकिन क्या आपने वॉचडॉग टाइमर को अक्षम करने की कोशिश की है?


यह एक उत्कृष्ट सुझाव था; मैंने आपके उत्तर को इस सिद्धांत का परीक्षण करने के बाद कुछ समय बिताया। हालांकि, यह प्रतीत होता है कि जब "डिवाइस skeazn64xxx2" चल रहा है कि जे-लिंक पहले से ही इसे ध्यान में रखता है और रीसेट करने के बाद वॉचडॉग को निष्क्रिय कर देता है। मैंने बिजली चक्रों के बीच डिवाइस को निर्दिष्ट किए बिना और दोनों के साथ WDOG_CS1 रजिस्टर की जाँच करके इसे सत्यापित किया। :-(
akohlsmith

हम्म ... ठीक है, दूसरी बात जो मैंने देखी है कि आप खाली चेक के दौरान सही त्रुटियों में हो रहे हैं। क्या आपका जे-लिंक फ्लैश ईसीसी को अक्षम कर रहा है? यदि नहीं, तो यह रीड-बैक सत्यापन के साथ परेशानी पैदा कर सकता है और शायद अप्रत्याशित अवरोधों को भी ट्रिगर करता है। (मैं विशेष रूप से फ्रीस्केल MCUs से परिचित नहीं हूं, लेकिन मुझे लगता है कि इस तरह का व्यवहार बहुत सामान्य है।)
एडम हुन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.