STM32F4 และ HAL


23

ดังนั้นฉันจึงทำการทดลองกับ STM32F407 (ฉันใหม่สำหรับ ARM) และตัดสินใจที่จะเขียนแอพอย่างง่ายโดยใช้ไลบรารี HAL เนื่องจากดูเหมือนว่า ST จะหยุดการทำงานของไลบรารีอุปกรณ์ต่อพ่วงมาตรฐาน ดังนั้นคำถามของฉันคืออะไรจุดใน HAL คืออะไร? StdPeriph ไม่ทำงานใช่ไหม เหตุใดพวกเขาจึงยกเลิก HAL สำหรับฉันดูเหมือนว่า HAL จะเป็นระเบียบอย่างสมบูรณ์

เอกสารประกอบคือ AWFUL อย่างน้อยที่สุดสำหรับ StdPeriph มีการอ้างอิงที่สมบูรณ์ซึ่งจัดได้ดีพอที่จะค้นหาสิ่งที่คุณต้องการได้อย่างง่ายดาย ( http://stm32.kosyak.info/doc/ ) สำหรับ HAL จะมีไฟล์ PDF เส็งเคร็ง ( http://www.st.com/st-web-ui/static/active/jp/resource/technical/document/user_manual/DM00105879.pdf ) ซึ่งมีโครงสร้างแบบสุ่มที่ดูเหมือนว่า การอ่านหัวข้อใด ๆ เช่นเกี่ยวกับอุปกรณ์ต่อพ่วงฉันไม่สามารถเข้าใจข้อกำหนดในการกำหนดค่าและปรับแต่งได้อย่างเหมาะสม ดูเหมือนว่าบันทึกส่วนตัวจากใครบางคนที่ไม่ต้องการที่จะลืมสิ่งที่มากกว่าการอ้างอิง

ฉันรู้ว่าฉันสามารถใช้ CubeMX เพื่อเริ่มต้น GPIO และกำหนดค่าอุปกรณ์ต่อพ่วง แต่เป้าหมายของฉันคือการทำด้วยตัวเองดังนั้นฉันจึงเข้าใจการทำงานของพวกเขาได้ดีขึ้นไม่มีซอฟต์แวร์ใดที่สามารถทำได้ทั้งหมดสำหรับฉัน ฉันกำลังทำอะไรผิดหรือเปล่า? ARM เป็นมือใหม่ในตัวฉันหรือเปล่าที่ทำให้ฉันสับสน? หรือเป็นเอกสารที่มีอยู่ที่ไม่ดี?


สิ่งที่จะเหมือน ChibiOS oer บางทีเหมาะกับคุณดีขึ้นหรือไม่ พวกเขามี RTOS แต่ยังเป็น HAL ที่ดีมากที่คุณสามารถใช้ได้โดยไม่ต้อง RTOS
IgorEE

ST ไม่ได้หยุดไลบรารีอุปกรณ์ต่อพ่วงมาตรฐานอย่างแน่นอน แต่พวกเขาจะไม่ปล่อยเวอร์ชั่นใหม่สำหรับตระกูลใหม่ พวกเขาระบุไว้ (ที่ใดที่หนึ่งในฟอรัมของพวกเขา แต่ฉันไม่สามารถหาได้) ว่าพวกเขาจะสนับสนุน SPL สำหรับครอบครัวที่มันเปิดตัวต่อไป (รวมถึง STM32F4) เนื่องจากคุณใหม่กับ ARM มันน่าจะดีที่สุดถ้าใช้ HAL ฉันมีโมดูลจำนวนมากที่เขียนแล้วโดยใช้ SPL ดังนั้นการเปลี่ยนแปลงจะเป็นความเจ็บปวดและฉันได้ทำการถอดออก นี่เป็นสิ่งที่ไม่ดีตั้งแต่เมื่อฉันตัดสินใจที่จะใช้ครอบครัวใหม่จะมีรหัสมากกว่านี้สำหรับพอร์ตไปยัง HAL
Tut

ebook นี้: leanpub.com/mastering-stm32เป็นคำแนะนำที่ดีสำหรับมือใหม่ (แต่สำหรับมืออาชีพด้วย) สู่โลกแห่ง STM32
Lorenzo Melato

คำตอบ:


13

การสร้างห้องสมุดของคุณเองนั้นค่อนข้างง่าย เอกสารข้อกำหนดการลงทะเบียนของพวกเขาค่อนข้างดีส่วนใหญ่ถ้าไม่ใช่อุปกรณ์ต่อพ่วงทั้งหมดที่ติดตั้งได้ง่าย ฉันพบว่ามันเจ็บปวดมากกว่าการใช้ห้องสมุดของพวกเขา แต่นั่นอาจเป็นเพียงฉัน นี่เป็นความจริงสำหรับ st, nxp, ti, atmel เพื่อบอกชื่อไม่กี่ (ไม่มากสำหรับ intel และ microchip)

ทำไมพวกเขาถึงเปลี่ยนห้องสมุดอาจมีเหตุผลหลายอย่างเจ้านายคนใหม่เข้ามาบางส่วนก็ถูกปิดตัวลงอีกคนเข้ามาแทนที่ การตลาดต้องการภาพลักษณ์ใหม่สำหรับผลิตภัณฑ์ ดังที่อิเล็กตรอนกล่าวถึงอาจเป็นความพยายามที่จะแยกตัวออกจากฮาร์ดแวร์มากกว่าเพื่อดึงดูดผู้ใช้ที่ไม่เต็มใจหรือไม่สามารถทำโลหะเปลือยได้ ฉันจะอธิบายเพิ่มเติมต่อไปและบอกว่าพวกเขาอาจพยายามแข่งขันกับปรากฏการณ์ Arduino mbed ตัวใดและคนอื่น ๆ พยายามทำและล้มเหลวเสมอ (แม้ก่อนหน้านี้กับ Arduino)

ไม่ว่าในกรณีใดก็ตามยิ่งห่างจากฮาร์ดแวร์มากเท่าไหร่มันก็จะยิ่งบวมและช้าลงดังนั้นยิ่งคุณต้องใช้จ่ายต่อหน่วยสำหรับรอม, แรมและ mhz เพื่อให้คุณสามารถใช้เวลาในการเขียนโปรแกรมเท่ากัน? แค่ทำมันแตกต่างกัน?

คุณบอกว่าคุณมาจากโลก PIC ตอนนี้พวกเขาทำงานได้ดีกับเครื่องมือเอกสารชิปของพวกเขาน่ากลัว แต่บางครั้งก็แย่ที่สุด พวกเขาชดเชยกับห้องสมุดและกล่องทราย

ในตอนท้ายของวันลองตัวเลือกต่าง ๆ ลองผลิตภัณฑ์คู่แข่งเพื่อดูว่าเครื่องมือของพวกเขาเปรียบเทียบ หลายอย่างที่คุณสามารถทำได้ฟรีเพื่อดูว่ามันสมเหตุสมผลหรือไม่และคุณสามารถรวบรวมสิ่งของได้ อาจใช้ชุดคำสั่งจำลอง ค้นหาที่ตรงกับคุณ

หมายเหตุตัวเลือกที่ไม่มีไลบรารีกระป๋องนั้นมีให้คุณเสมอ คุณไม่ได้ จำกัด ว่า toolchain ใดที่คุณสามารถใช้ระบบปฏิบัติการโฮสต์อะไร IDE ตัวแก้ไขและอื่น ๆ พวกเขาอาจติดไว้กับคุณในการเขียนโปรแกรมชิ้นส่วนหากตัวเลือกของพวกเขาถูก จำกัด อย่างมากในแง่ที่ว่าไปยังชิปอื่น หรือผู้ขายถ้าคุณสามารถ

ในการขายผลิตภัณฑ์ชิปเช่นนี้พวกเขาต้องจัดเตรียมสภาพแวดล้อมการพัฒนาไม่ว่าจะเป็นของพวกเขาทั้งหมดหรือของฟรีที่พวกเขาติดกาวเข้าด้วยกัน และพวกเขามักจะรวบรวมห้องสมุดบางชนิด เพียงแค่ต้องดูดีพอและกระพริบนำตัวอย่างทำงานได้ดีพอที่จะได้รับการจัดการของคุณหรือทีมฮาร์ดแวร์ของคุณในการออกแบบผลิตภัณฑ์ของพวกเขาแล้วเมื่อผลิตภัณฑ์บอร์ดของคุณถูกโยนข้ามกำแพงซอฟต์แวร์เป็นเมื่อความเจ็บปวด หรือไม่มาถึง ถ้ามันใช้งานได้ดี แต่ก็ไม่ได้เป็นชัยชนะที่ยิ่งใหญ่สำหรับผู้จำหน่ายชิปเพราะตอนนี้คุณจะจ่ายเงินสำหรับการสนับสนุนทางเทคนิคสำหรับเรื่องเล็กน้อยครั้งสุดท้าย ดังนั้นจึงเป็นความสนใจที่ดีที่สุดของพวกเขาที่จะอยู่ที่นั่น แต่ก็ไม่มากนัก

ผู้ขายชิปต้องดูดีพอที่จะได้รับการออกแบบ พวกเขาจะต้องปรับปรุง (เปลี่ยน) ผลิตภัณฑ์เพื่อดึงดูดลูกค้าทั้งเก่าและใหม่ ดังนั้นพวกเขาจะทำหน้าที่ดูแลไม่ว่าจะไกลเท่าไรและสนับสนุนห้องสมุดก่อนหน้าเท่าไร ดังนั้นห้องสมุดใด ๆ ที่คุณคุ้นเคยจะหายไปในที่สุด ดังนั้นเรียนรู้ที่จะปรับ (หรือไม่ใช้ของพวกเขาและไปด้วยตัวคุณเองซึ่งคุณสามารถรองรับได้ตลอดไป) จริงอยู่คุณจะต้องพัฒนาแอพพลิเคชั่นหนึ่งครั้งต่อผลิตภัณฑ์ทำให้เฟิร์มแวร์ของคุณสมบูรณ์แบบ (โชคดีถ้าใช้ห้องสมุดบุคคลที่สาม) และคุณไม่จำเป็นต้องกลับไปหาคอมพิวเตอร์ที่จะโหลด toolchain ของพวกเขาหากคุณพบ คัดลอกและจำวิธีใช้ไลบรารีเก่านั้น โปรดจำไว้ว่าไม่เพียง แต่คุณควรบันทึกซอร์สโค้ดของคุณ แต่คุณควรบันทึกเครื่องมือและเอกสารทั้งหมด

ไลบรารีของพวกเขาได้รับการสนับสนุนโดยปกติหนึ่ง toolchain ภายใต้ IDE หนึ่งอาจและสองครั้งใน Windows และบางรุ่นเท่านั้น อีกครั้งคุณไม่มีข้อ จำกัด เหล่านั้นแน่นอนที่สุดไม่ได้สำหรับ ARM ถ้าคุณทำสิ่งของคุณเอง คุณสามารถอ่านใด ๆ / ทั้งหมดของห้องสมุดของพวกเขาเพื่อดูว่าพวกเขาทำสิ่งต่าง ๆ แต่บ่อยครั้งที่มันน่ากลัวมากพวกเขาไม่ใช้นักพัฒนาทีมของพวกเขาสำหรับห้องสมุดฉันได้แยกรหัสออกสองสามบรรทัดเพื่อถามผู้สมัครสัมภาษณ์ว่าอะไรผิดกับรหัสนี้

เพื่อประหยัดเวลาและความพยายามทั้งในด้านซิลิกอนและด้านซอฟต์แวร์ที่พวกเขามักจะรีไซเคิล ip เดียวกันดังนั้นเมื่อคุณเห็นว่าอุปกรณ์ต่อพ่วงทำงานกับชิปตัวใดตัวหนึ่งของมันมันมักจะทำงานในลักษณะเดียวกันกับชิปอื่น ๆ ใช่ระบบนาฬิกาอาจมีเล่ห์เหลี่ยมไม่ว่าจะมีหรือไม่มีไลบรารี่ มีโอกาสสูงมากในการต่อประสานชิปซึ่งเป็นสิ่งที่ชิป / บอร์ดส่วนใหญ่ของฉันเกิดขึ้น ช่วยให้เข้าใจว่าชิปของพวกเขาทำงานอย่างไรตัวอย่างเช่น AVR ส่วนใหญ่ถ้าไม่ใช่ทั้งหมดสามารถทำโปรแกรมใหม่ได้ในขณะที่ชิปถูกรีเซ็ตดังนั้นรหัสที่ไม่ดีใด ๆ ที่ยุ่งกับหมุดที่จำเป็นสำหรับการตั้งโปรแกรมใหม่หรือตรรกะที่จำเป็นสำหรับการโปรแกรมใหม่ คุณสามารถตั้งโปรแกรมชิปเหล่านั้นใหม่ได้ ผู้ขายเหล่านี้บางส่วน (st เป็นหนึ่ง) มี bootloader ภายในซึ่งคุณสามารถเลือกใช้สายรัด (BOOT0 เช่นในโลก st)

ขนาดเดียวเหมาะกับทุกคนไม่เข้ากัน โดยเฉพาะอย่างยิ่งความจริงสำหรับซอฟต์แวร์ ดังนั้นความพยายามใด ๆ ที่จะทำให้นามธรรมฮาร์ดแวร์หายไปเพียงทำให้มันช้าและป่อง อาจจะได้ชิปที่ใหญ่กว่าและใช้ linux กับมันถ้านั่นคือสิ่งที่คุณเป็นอย่างแท้จริง สิ่งนี้เป็นผลมาจากนักพัฒนาแม้ว่าไม่ต้องการทำให้มือสกปรกดังนั้นเราจึงถามเรื่องนี้โดยทั่วไปและพวกเขาพยายามจัดหามัน

อย่าล็อคตัวคุณเองกับ st หรือผู้ขายรายใดรายหนึ่ง (เว้นแต่ว่าจะสายเกินไปและการจัดการและหรือทีมฮาร์ดแวร์ได้ติดมันไว้กับคุณให้สังเกตว่าผลิตภัณฑ์ stm32 นั้นดีและใช้งานง่าย) ร้านค้ารอบ ๆ TI ใส่ไข่จำนวนมากลงในตะกร้าเยื่อหุ้มสมอง -m4 คุณสามารถทำสิ่ง mbed ในผลิตภัณฑ์ arm เหล่านี้รวมถึงโซลูชันที่สนับสนุนผู้ขายได้

สิ่งหนึ่งที่คุณวางใจได้เสมอคือพวกเขาจะเปลี่ยนห้องสมุดเป็นครั้งคราวและในที่สุดก็หยุดการสนับสนุนห้องสมุดที่คุณคุ้นเคย


อาร์กิวเมนต์ที่ยอดเยี่ยมในการพัฒนาห้องสมุดของคุณเองเกือบจะมั่นใจแล้วและฉันอยากจะลองสิ่งนั้นคุณคิดว่าฉันต้องการอะไรนอกเหนือจากคู่มืออ้างอิง stm32fxx? ฉันควรอ่านคู่มือ core arm ด้วยหรือไม่ ฉันจะใช้ CMSIS หรือไม่ ฉันจะเข้าถึงรีจิสเตอร์และหน่วยความจำได้อย่างไร คุณสามารถอธิบายเพิ่มเติมหรือยกตัวอย่างเกี่ยวกับวิธีเริ่มต้นใช้งาน
ElectronS

บางสิ่งที่ต้องพิจารณา รหัสทุกบรรทัดเพิ่มความเสี่ยง อธิบายกับเจ้านายของคุณว่าคุณวางแผนที่จะใช้รหัสบรรทัดของคนอื่นเป็นหมื่นถึงแสนคนโดยไม่ต้องตรวจสอบทุกบิตที่คุณใช้ เลเยอร์ของรหัสโดยเฉพาะอย่างยิ่งเมื่อทำให้เป็นนามธรรมทำให้ไบนารีมีขนาดใหญ่ขึ้นและประสิทธิภาพลดลง ดังนั้นอธิบายกับเจ้านายของคุณอีกครั้งว่าผลิตภัณฑ์ 10 ล้านชิ้นจะต้องเสียค่าใช้จ่ายเพิ่ม 35 เซนต์ต่อ 3.5 ล้านดอลลาร์เพราะคุณเลือกที่จะใช้ห้องสมุดทำให้คุณขี้เกียจ
old_timer

เจ้านายของคุณสามารถจ้างกองทัพคนหนึ่งเพื่อแทนที่คุณด้วยเงินประเภทนั้นตรวจสอบรหัสทุกบรรทัดเพื่อที่พวกเขาจะไม่ได้รับ 10,000 หน่วยในและพบว่าพวกเขาต้องทิ้งพวกเขาไปทั่วข้อผิดพลาดซอฟต์แวร์ที่เกิดจากการใช้ซอฟต์แวร์ที่มีความเสี่ยง และใช้ชิ้นส่วนที่มีขนาดเล็กลงซึ่งมีค่าใช้จ่ายน้อยลงในอัตรานาฬิกาที่ช้ากว่าซึ่งใช้พลังงานน้อยลงและทำงานได้นานขึ้นเมื่อชาร์จแบตเตอรี่หนึ่งก้อน บางครั้งมันก็คุ้มค่ากับความพยายาม และแน่นอนว่าบางครั้งก็ไม่
old_timer

ขอบคุณสำหรับคะแนนที่คุณระบุ แต่คุณสามารถตอบคำถามของฉันในวิธีที่ดีที่สุดในการเริ่มต้นหรือไม่ ใช้ไฟล์ CMSIS และ HAL .h เพื่อลงทะเบียนชื่อและตำแหน่งหน่วยความจำหรือไม่?
อิเล็กตรอน

ไม่มี "ดีที่สุด" การใช้คำนั้นทำให้เป็นความเห็นส่วนตัวไม่ใช่ความจริง เพียงแค่เลือกหนึ่งและเริ่มต้นหรือทำอย่างที่ฉันอาจลองหนึ่งจนกว่าคุณจะตีบล็อกถนนจากนั้นลองอีกหนึ่งและอื่น ๆ และไปรอบ ๆ ผลักดันบล็อกถนนแต่ละบล็อกกลับไปที่บล็อกถนนต่อไปจนกว่าหนึ่งหรือทั้งหมดทะลุ
old_timer

14

ให้ฉันบอกคุณว่าพวกเราหลายคนแบ่งปันความผิดหวังแบบเดียวกับที่คุณมีกับห้องสมุด HAL พวกเขามีเอกสารที่ไม่ดีและไม่ชัดเจนและยังใหม่อยู่ซึ่งมีข้อบกพร่องมากมาย

ดังนั้นเพื่อตอบคำถามของคุณเหตุใด ST ที่ตัดสินใจบน HAL นั้นง่าย:

  1. พวกเขาต้องการสร้างเลเยอร์ abstraction ฮาร์ดแวร์ซึ่งเป็นภาษาอังกฤษแบบธรรมดาหมายความว่าพวกเขาต้องการพัฒนาซอฟต์แวร์และรหัสให้เป็นอิสระจากไมโครคอนโทรลเลอร์ดังนั้นหากคุณเขียนรหัสวันนี้สำหรับ stm32f4 และคุณต้องการหลังจากสองสามปีที่ผ่านมาเพื่อย้ายไปยัง stm32f7 จะง่ายและรหัสจะเป็นแบบแยกส่วนสูง

  2. นอกจากนี้ยังช่วยให้นักพัฒนาซอฟต์แวร์โปรแกรมเมอร์สามารถทำงานร่วมกับไมโครคอนโทรลเลอร์ได้โดยไม่ต้องเข้าใจหรือเข้าใจในรายละเอียดว่าฮาร์ดแวร์ทำงานได้อย่างไร บริษัท อย่าง ST และ TI (เริ่มจากถนนสายนี้) กำลังพยายามทำการพัฒนาแบบฝังตัวคล้ายกับการพัฒนาโค้ด PC ที่คุณใช้ไดรเวอร์ระดับสูงเพื่อพัฒนาโค้ด FAST ความซุ่มซ่ามและการขาดการปรับให้เหมาะสมในไดรเวอร์และไลบรารีของพวกเขานั้นได้รับการชดเชยโดยอุปกรณ์ ARM ที่มีประสิทธิภาพสูง

  3. ฉันคิดว่า STM32cubeMX เป็นเครื่องมือที่ยอดเยี่ยมหากคุณใช้ไลบรารี HAL เพราะงานที่ต้องใช้เวลามากที่สุดคือการเริ่มต้นอุปกรณ์ต่อพ่วงและตอนนี้คุณสามารถทำได้ในเวลาอันสั้นด้วยอินเตอร์เฟสภาพที่สามารถเปลี่ยนแปลงได้ง่ายโดยไม่กระทบกับรหัสผู้ใช้ (ถ้า คุณเขียนรหัสของคุณในสถานที่ที่เหมาะสม) คุณสามารถใช้ Stm32cubeMx จากนั้นตรวจสอบรหัสและพยายามที่จะเข้าใจวิธีการและเหตุผลที่พวกเขาใช้แต่ละฟังก์ชั่นด้วยวิธีนี้คุณพยายามที่จะแก้ปัญหาการออกกำลังกาย IMO ที่ดี

  4. ARM core นั้นซับซ้อนและเงียบสงบดังนั้นวิธีเก่า ๆ ที่เราใช้กับไมโครคอนโทรลเลอร์ 8 บิตเช่นการจัดการรีจิสเตอร์โดยตรง (การเขียน C ในแอสเซมบลีแฟชั่น) ไม่สามารถทำได้มันใช้เวลานานและทำให้รหัสยากต่อการบำรุงรักษาเนื่องจากสถาปัตยกรรมที่ซับซ้อน เช่นการตั้งค่านาฬิกา)


6
ทั้งหมดนี้เป็นสิ่งที่เข้าใจได้มาก แต่สิ่งเหล่านี้ใช้กับ StdPeriph ด้วยใช่ไหม? ฉันหมายถึงมันเป็นห้องสมุดที่เป็นนามธรรมของฮาร์ดแวร์อยู่แล้วดังนั้นจุดประสงค์ในการสร้างใหม่แทนที่การปรับปรุงเก่าคืออะไร ฉันอยากรู้อยากเห็นจริงๆฉันยังใหม่กับ ARM ฉันใช้ PIC มาหลายปีแล้ว
John

ยิ่งไปกว่านั้นสำหรับไลบรารีที่สอดคล้องกับ CMSIS
Scott Seidman

1
@ จอห์นเท่าที่ฉันเข้าใจ HAL เป็นนามธรรมและฮาร์ดแวร์ขึ้นอยู่กับน้อยกว่าห้องสมุดมาตรฐาน
อิเล็กตรอน

12

ฉันรู้ว่านี่จะเป็นเวลานานและให้ความเห็น แต่เนื่องจากเราเพิ่งเปิดตัวผลิตภัณฑ์ใหม่ของเราโดยใช้ HAL ฉันคิดว่ามันคุ้มค่าที่จะพิจารณา นอกจากนี้ฉันไม่ทำงานให้กับ ST ฉันเกลียด HAL ทุกบิตเกือบจะเริ่มโครงการใหม่ด้วย StdPeriph ฉันรู้สึกเจ็บปวด - แต่ตอนนี้ฉันเข้าใจว่าทำไม

ก่อนอื่นบิตของพื้นหลัง เราพัฒนาระบบ telemetry ที่ใช้พลังงานต่ำมากและผลิตภัณฑ์ของเราใช้พลังงานจาก STM32L1 เมื่อเราเริ่มทำงานกับเฟิร์มแวร์เรามีทางเลือกตามปกติสำหรับอุปกรณ์ ST (โลหะเปลือย): ทำทุกอย่างด้วยมือใช้ไลบรารี StdPeriph หรือไปกับ HAL พวก ST เชื่อว่าเราจะไปกับ HAL - ดังนั้นเราจึงทำ มันเจ็บปวดเราต้องแก้ไขข้อผิดพลาดในซอฟต์แวร์ (ส่วน I2C ทำให้เราบ้าไปซักพักแล้ว) และฉันก็ยังไม่ชอบสถาปัตยกรรมโดยรวม แต่มันได้ผล

เมื่อฉันเปลี่ยนจากเดสก์ท็อปเป็นแบบฝังตัวกว่าหนึ่งปีที่ผ่านมาฉันรู้สึกทึ่งกับบางสิ่งที่แปลกประหลาดที่ฉันไม่สามารถตั้งชื่อหรือเข้าใจได้ เมื่อเวลาผ่านไปผมก็สามารถที่จะเข้าใจสิ่งที่เป็น - หรือมากกว่าสิ่งที่เป็น - ที่เกิดขึ้น: โลกที่ฝังตัวอยู่ในการเปลี่ยนแปลง ซิลิคอนมีราคาถูกลงทุกวันและ MCU นั้นมีประสิทธิภาพและอเนกประสงค์มากกว่า อุปกรณ์มากขึ้นเรื่อย ๆ โดยไม่คำนึงถึงขนาดความต้องการพลังงานต้องพึ่งพา MCU ทั่วไป มี บริษัท เข้าร่วมเล่นกันมากขึ้นเรื่อย ๆ ทำให้มีผู้พัฒนาใหม่ ๆ ที่มีภูมิหลังหลากหลาย วัฒนธรรม "หมายถึง" ลอยห่างจากคน "EE ดั้งเดิมที่มีทักษะการเขียนโปรแกรมพ่อมด" เป็น "คน SW ที่มีความรู้ฮาร์ดแวร์คลุมเครือ"

ไม่ว่าจะดีหรือไม่ดีก็ไม่เกี่ยวข้อง มันเพิ่งเกิดขึ้น จริงๆแล้วมันเกิดขึ้นกับโลกของซอฟต์แวร์มากกว่าหนึ่งครั้ง เว็บบูมในปี 2000 ดึงดูดมือใหม่ PHP / MySQL - บอกพวกเขาว่ามีการลงทะเบียนใน CPU พวกเขาจะตอบว่า "ฉันใช้ Linux ดังนั้นจึงไม่มี Registry ในระบบปฏิบัติการของฉัน" ก่อนหน้านี้ระบบปฏิบัติการที่ผู้ใช้หลายคนที่ทำงานในโหมดการป้องกันได้รับอนุญาตให้นักพัฒนาไม่เคยขี้เกียจที่จะตั้งค่า ISR ในอาชีพของพวกเขาทั้งและจะปรับ แม้กระทั่งก่อนหน้านี้คีย์บอร์ดและหน้าจอทำให้การ์ดเจาะรูและผู้ผลิตเครื่องพิมพ์บ้าไป

และใช่แล้วกระแสในปัจจุบันทำให้ฉันเสียใจเป็นการส่วนตัวเพราะฉันเห็นนักพัฒนาที่ไม่รู้ด้วยความกลัวด้วยเทคโนโลยีล่าสุดที่ทันสมัยในขณะที่ไม่สามารถเชื่อมโยงพวกเขากับประวัติศาสตร์ได้ทั้งหมด เมื่อฉันอายุน้อยกว่าฉันเขียนโค้ดเกมใน Javascript กับ WebGL ในปี 2558 ฉันต้องการตะโกนว่า "ไม่มีอะไรใหม่! ฉันทำเช่นเดียวกันกับ C ++ และ 3Dfx SDK ในปี 1995!" สิ่งที่เรื่องราวไม่ได้บอกคือเกมของเขาทำงานบนโทรศัพท์มือถือของฉันในขณะที่ฉันต้องการพีซี gamer (และตัวติดตั้งและฉันไม่สามารถผลักดันการอัปเดตทางเว็บ) ความจริงก็คือเขาสามารถพัฒนาเป็นเกมในหนึ่งเดือนที่ฉันทำเช่นเดียวกันในหกหรือสิบสอง

เห็นได้ชัดว่าทั้ง ST หรือ TI หรือ Intel หรือผู้ผลิตชิปต้องการที่จะพลาด และพวกเขาพูดถูก HAL คือการตอบสนองของ ST และที่จริงแล้วค่อนข้างดีไม่เพียง แต่ในด้านธุรกิจหรือการตลาด แต่ยังรวมถึงด้านวิศวกรรมด้วยเช่นกัน สาเหตุที่เสียงอยู่ในชื่อ:

Hardware Abstraction Layer

หากมีสิ่งอื่นใดนี่คือสิ่งที่คุณควรจำ HAL เป็นความพยายามที่จะย้ายออกจากฮาร์ดแวร์ มันเป็นวิศวกรรมที่ดีเพราะช่วยให้เราสามารถแยกการทำงานจากรายละเอียด เลเยอร์คือสิ่งที่ช่วยให้สามารถพัฒนาโปรแกรมที่ซับซ้อนได้ซึ่งสิ่งหนึ่งที่เป็นนามธรรมอยู่ด้านบนของอีกอันหนึ่งลงไปที่ฮาร์ดแวร์ นามธรรมเป็นจริงเครื่องมือที่มีประสิทธิภาพมากที่สุดที่เรามีการจัดการความซับซ้อน ฉันสงสัยมากทุกคนบนโลกใบนี้จะสามารถตั้งโปรแกรมเว็บเบราว์เซอร์ในการประกอบสำหรับซีพียูที่เฉพาะเจาะจง

การเปลี่ยนแปลงทางวัฒนธรรมนั้นยากที่จะแยกแยะ แต่เมื่อฉันต้องนับหนึ่งไม่จำเป็นต้องอ่าน Knuth's Art of Computer Programmingเพื่อพัฒนาเว็บแอปพลิเคชันโลก EE ต้องยอมรับว่ามีผู้มาใหม่ที่สามารถ (และจะ!) พัฒนาโค้ดฝังตัว โดยไม่ต้องอ่านคู่มืออ้างอิง Holy Fucking

ข่าวดีก็คือผู้เล่นใหม่ไม่ได้หมายความว่าจะทำงานได้น้อยลงสำหรับผู้เล่นที่อายุมากกว่า - ค่อนข้างตรงกันข้าม IMHO พวกเขาจะไปหาใครเมื่อสิ่งที่ "ไม่ทำงาน" หากคุณมี RTFM (ซึ่งแตกต่างจากพวกเขา) และถ้าคุณรู้ว่าการลงทะเบียนการกำหนดค่าที่คลุมเครือแบบใดคุณจะมีข้อได้เปรียบ

ระหว่างการอ่านและการทดสอบของคุณเพียงแค่ไปกับ HAL ใหม่ MCU ไม่มีปัญหา. ใหม่สาย MCU? ไม่มีปัญหาเช่นกัน (ฉันเขียนโค้ดทดสอบบน STM32F4 Nucleo ในหนึ่งวันด้วย CubeMX และจากนั้นก็ส่งไปยังอุปกรณ์ของเรา ... มันรู้สึกถูกต้อง ) การเยาะเย้ยสำหรับการทดสอบหน่วย? ไม่มีปัญหา. รายการดำเนินต่อไปเรื่อย ๆ เพราะสิ่งที่เป็นนามธรรมนั้นดี

แน่นอน HAL นั้นไม่ได้เป็นของแท้ 100% มันเป็นเอกสารที่น่ากลัว (แต่คุณมี RT F HRM ใช่มั้ย?) มีข้อบกพร่อง ST เพิ่งทิ้งรุ่นเบต้ามาให้เรา แต่การไม่ปล่อย HAL นั้นยิ่งเลวร้ายลงไปอีก


ฉันเห็นว่าคุณมาจากไหน ตามที่ฉันเข้าใจสิ่งต่าง ๆ (น่าเสียดาย) ไปทาง Arduino พยายามซ่อนความเป็นจริงจากโปรแกรมเมอร์เพื่อหลอกล่อซอฟต์แวร์ระดับสูงในการเขียนโปรแกรมฮาร์ดแวร์และนี่คือเหตุผลเบื้องหลังไลบรารีเช่น HAL เมื่อเห็น แต่เอกสารว่ามันแย่มากและเป็นระเบียบมากเกินไปฉันไม่คิดว่าพวกเขาจะประสบความสำเร็จในการทำเช่นนั้นได้ทุกเวลาเร็ว ๆ นี้
จอห์น

@John: HAL ไม่ได้ซ่อน "ความจริง" ใด ๆ ทุกอย่างอยู่ที่นั่นเพื่อให้คุณปรับแต่ง ชิ้นส่วนทั้งหมดเป็นทางเลือก - เช่นคุณอาจต้องการใช้เฉพาะมาโครเพื่อเข้าถึงการลงทะเบียนหรือเฉพาะไดรเวอร์ที่เฉพาะเจาะจง (เช่น I2C) หรือทุกอย่างรวมถึง ISR และการตั้งค่านาฬิกา ตัวเลือกของคุณ. อย่างไรก็ตามฉันเห็นด้วยว่าเอกสารนั้นแย่มาก (ฉันบอก ST และพวกเขาสัญญาว่าพวกเขากำลังทำงานกับมัน BTW)

เรากำลังทำแบบเดียวกันกับเครื่องมือใหม่ เพราะเครื่องมือใหม่ ๆ สัญญาว่าจะทำให้งานง่ายขึ้นและเร็วขึ้นซึ่งคุ้มค่า แต่เราก็ยังคงทำเช่นเดียวกันเพราะมนุษย์ยังคงเหมือนเดิมไม่ว่าจะเป็นปี 2095 หรือ 1995 ทางเลือกที่ลาให้เราคือถ้าเราทำตามเครื่องมือใหม่หรืออยู่กับเครื่องมือที่เราคุ้นเคยอยู่แล้ว
Jony
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.