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.