คำถามติดแท็ก gcc

7
สำหรับโค้ดที่ฝังตัวทำไมฉันจึงควรใช้ประเภท“ uint_t” แทน“ int ที่ไม่ได้ลงชื่อ”
ฉันกำลังเขียนแอปพลิเคชันใน c สำหรับ STM32F105 โดยใช้ gcc ในอดีตที่ผ่านมา (กับโครงการง่าย) ผมได้กำหนดไว้เสมอเป็นตัวแปรchar, int, unsigned intและอื่น ๆ ผมเห็นว่ามันเป็นเรื่องธรรมดาที่จะใช้ประเภทที่กำหนดไว้ใน stdint.h เช่นint8_t, uint8_t, uint32_tฯลฯ นี้มันเป็นจริงในหลาย API ที่ฉันใช้และยังอยู่ในห้องสมุด ARM CMSIS จาก ST ฉันเชื่อว่าฉันเข้าใจว่าทำไมเราควรทำเช่นนั้น เพื่อให้คอมไพเลอร์เพิ่มประสิทธิภาพพื้นที่หน่วยความจำให้ดีขึ้น ฉันคาดว่าอาจมีเหตุผลเพิ่มเติม แต่เนื่องจากกฎการส่งเสริมจำนวนเต็มคผมให้ทำงานขึ้นกับคำเตือนการแปลงเวลาใด ๆ ที่ฉันพยายามที่จะเพิ่มค่าสองค่าดำเนินการค่าที่เหมาะสม ฯลฯ conversion to 'uint16_t' from 'int' may alter its value [-Wconversion]เตือนอ่านสิ่งที่ชอบ ปัญหาที่จะกล่าวถึงที่นี่และที่นี่ มันไม่ได้เกิดขึ้นเมื่อใช้ตัวแปรประกาศเป็นหรือintunsigned int ในการให้ตัวอย่างสองสามตัวอย่างให้สิ่งนี้: uint16_t value16; uint8_t value8; …
22 c  embedded  gcc 

5
Code Sourcery G ++ Lite ยังเป็นโครงการที่ทำงานได้หรือไม่?
เมื่อฉันพยายามดาวน์โหลด Code Sourcery G ++ Lite สำหรับ ARM รุ่นใหม่ฉันสังเกตว่าฉันถูกเปลี่ยนเส้นทางไปยัง บริษัท อื่นและมันยากมากที่จะพบสิ่งใดในไซต์นั้นเกี่ยวกับ Sourcery G ++ Lite สำหรับ ARM ใครบ้างที่รู้สถานะของโครงการ Sourcery G ++ Lite สำหรับ ARM? มันยังมีชีวิตอยู่คนยังทำงานกับมันหรือไม่? จะมีให้ในอนาคตหรือไม่ อัปเดต: พวกเขาดูเหมือนจะเปลี่ยนชื่อโครงการเป็นSourcery CodeBench Liteดังนั้นคำถามอาจไม่เกี่ยวข้องกัน? อัปเดต: Mentor Graphics กำลังปิดโครงการไม่เป็นทางเลือกที่ทำงานได้อีกต่อไป หมายเหตุ: สถานที่ทำงานได้ในปัจจุบันเพื่อรับ gcc สำหรับ ARM น่าจะมาจาก Linaro https://www.linaro.org/about/ https://www.linaro.org/downloads/ https://launchpad.net/gcc-arm-embedded
18 arm  compiler  gcc 

2
STM32F2: Makefile สคริปต์ตัวเชื่อมโยงและการรวมไฟล์เริ่มต้นโดยไม่มี IDE เชิงพาณิชย์
ฉันทำงานกับ STM32F2 (โดยเฉพาะคือ STM32F217IGH6 ในคณะกรรมการพัฒนา) เป็นเวลาประมาณสองเดือน ปัญหาที่ใหญ่ที่สุดของฉันเกี่ยวกับ "การตั้งค่า" ซึ่งรวมถึง makefile, linker script และไฟล์เริ่มต้น โดยเฉพาะอย่างยิ่งฉันไม่สามารถตั้งค่าตารางเวกเตอร์ขัดจังหวะและเรียกตัวจัดการขัดจังหวะได้อย่างถูกต้อง ST ให้ตัวอย่างที่ปรับให้เหมาะกับ IDE เชิงพาณิชย์ แต่ฉันใช้การรวบรวมใหม่ Yagarto ของ toolchain GCC (และ OpenOCD เพื่อโหลดภาพผ่าน JTAG) มีตัวอย่างโครงการสำหรับบอร์ดของฉัน (หรือลูกพี่ลูกน้องที่ใกล้ชิด) ซึ่งมี makefile, linker script และการรวมไฟล์เริ่มต้นสำหรับ IDE ที่ไม่ใช่เชิงพาณิชย์ที่ถูกตั้งค่าสำหรับตัวจัดการอินเตอร์รัปต์
16 c  stm32  gcc 

4
ปัญหา Endian บน STM32
ฉันกำลังใช้ arm gcc (CooCox) เพื่อเขียนโปรแกรม STM32F4 การค้นพบและฉันได้รับการต่อสู้กับปัญหา endian ฉันสุ่มตัวอย่างด้วย ADC 24 บิตผ่าน SPI เนื่องจากสามไบต์กำลังเข้ามา MSB ครั้งแรกที่ฉันมีความคิดในการโหลดมันลงในกลุ่มเพื่อให้พวกเขา (ฉันหวังว่าต่อไป!) ใช้งานง่ายขึ้นเล็กน้อย typedef union { int32_t spilong; uint8_t spibytes [4]; uint16_t spihalfwords [2];} spidata; spidata analogin0; ฉันโหลดข้อมูลโดยใช้ spi อ่านเป็น analogin0.spibytes [0] - [2], ด้วย [0] ในฐานะ MSB จากนั้นฉันพ่นมันออกทาง USART ที่ megabaud ครั้งละ 8 บิต …
11 c  stm32  cortex-m  gcc 

3
Eclipse + GNU ARM + STM32 - HAL หรือ SPL
ฉันจะเริ่มต้นด้วยการพัฒนา ARM (หลังจากใช้งาน AVR มา 2 ปี) และเลือกบอร์ด STM DISCOVERY ที่มีไมโครโปรเซสเซอร์ stm32f4 อยู่ ฉันตัดสินใจที่จะไปกับ eclipse + ARM gcc เนื่องจากฉันไม่ชอบขีด จำกัด โค้ดบน Keil และฉันไม่มีเงินที่จะได้รับเวอร์ชันที่จ่ายเงิน บทเรียนต่อไปนี้ฉันได้ติดตั้ง eclipse พร้อมกับ gcc ARM tools + openocd + ทำ utils เป็นต้น คำถามของฉันเกี่ยวกับปลั๊กอิน 'แพ็คเกจ' เช่นเดียวกับผู้เริ่มต้นฉันสับสนว่าจะใช้ STM HAL ใหม่หรือ SPL รุ่นเก่า ความเข้าใจของฉันคือ HAL ได้นำเอานามธรรมไปใช้ในระดับที่สามารถเรียกว่า Arduino เทียบเท่ากับแขน ในทางกลับกัน SPL …
10 arm  stm32  gcc  cortex  hal-library 

4
ทำไมคอมไพเลอร์ GCC จึงไม่ใช้รหัสบางอย่าง
ฉันไม่สามารถเข้าใจว่าทำไม GCC คอมไพเลอร์ตัดส่วนของรหัสของฉันในขณะที่มันรักษารหัสเดียวกันในละแวก? รหัส C: #define setb_SYNCO do{(PORTA|= (1<<0));} while(0); ISR(INT0_vect){ unsigned char i; i = 10; while(i>0)i--; // first pause - omitted setb_SYNCO; setb_GATE; i=30; clrb_SYNCO; while(i>0)i--; // second pause - preserved clrb_GATE; } ส่วนที่สอดคล้องกันของ LSS (ไฟล์แอสเซมเบลอร์ที่สร้างโดยคอมไพเลอร์): ISR(INT0_vect){ a4: 1f 92 push r1 a6: 0f 92 push r0 a8: …
9 avr  c  avr-gcc  optimization  gcc 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.