Để tìm hiểu làm thế nào nó hoạt động bạn muốn sử dụng không có ở trên. Nhận một trình biên dịch chéo cánh tay và các tài liệu từ st, được thực hiện. Bắt đầu viết mã. những con chip này thường rất dễ lập trình. tài liệu cho bạn biết bit nào trong thanh ghi làm gì.
Bất kỳ / tất cả các thư viện này đều có ý định loại bỏ sự hiểu biết / gánh nặng / công việc đó khỏi bạn và khiến nó cảm thấy giống như một cuộc gọi api giống như trải nghiệm lập trình ứng dụng. Đó là những gì rất nhiều người muốn. Bạn có thể sử dụng tất cả các nguồn cho các thư viện này để giúp hiểu, nhưng khi bạn hiểu rõ hơn về nó, bạn sẽ tìm thấy các lỗ hổng và vấn đề trong các thư viện, đôi khi là mã rất đáng sợ. mã được ghép lại với nhau, được viết một cách khái quát và được chuyển từ chip này sang chip khác, có lẽ các tính năng hỗ trợ mà chip của bạn không có, v.v. Và tất cả chúng đều có quá nhiều chi phí. 10 đến 100 lần quá nhiều mã cho nhiệm vụ, chắc chắn rất nhiều trong số đó có thể tối ưu hóa đi nhưng tại sao lại có nó ở nơi đầu tiên?
Cho dù bạn tự đi hay sử dụng một trong những thư viện này, bạn vẫn nên xem nguồn cho các thư viện bạn sử dụng để xem bạn có thoải mái với những gì họ đang làm không, nếu nó hợp lý, phù hợp với tài liệu chip, v.v. gặp sự cố, bạn có khả năng phải tìm hiểu nội dung của họ nhiều như của bạn để tìm hiểu lý do tại sao.
Lưu ý rằng các tài liệu chip cũng không hoàn hảo, đó là một phần của niềm vui.
Tôi không hiểu tại sao lắp ráp lại xuất hiện trong một cuộc thảo luận về lập trình kim loại trần. Bạn có thể nhận được bằng cách lắp ráp rất ít. Đối với các chip cortex-m này, về mặt kỹ thuật, bạn chỉ cần nhiều asm này để được khởi động:
.globl _start
_start:
.word 0x20001000
.word main
Bạn không thể dựa vào dữ liệu cũng như bss và bạn không thể quay lại từ chính với số asm tối thiểu đó. Nhưng đó là tất cả những gì bạn cần cho kim loại trần. Bây giờ nếu bạn muốn làm gián đoạn, bạn cần thêm các mục trong bảng vectơ. nhiều dòng .word. Tôi đề nghị nhiều asm hơn, nhưng có thể 10 hoặc 20 dòng nữa.
đây thường là tất cả các asm tôi sử dụng.
.cpu cortex-m0
.thumb
.thumb_func
.global _start
_start:
stacktop: .word 0x20001000
.word reset
.word hang
.word hang
.word hang
.word hang
.word hang
.word hang
.word hang
.word hang
.word hang
.word hang
.word hang
.word hang
.word hang
.word hang
.thumb_func
reset:
bl notmain
b hang
.thumb_func
hang: b .
.align
.thumb_func
.globl PUT16
PUT16:
strh r1,[r0]
bx lr
.thumb_func
.globl PUT32
PUT32:
str r1,[r0]
bx lr
.thumb_func
.globl GET32
GET32:
ldr r0,[r0]
bx lr
.thumb_func
.globl GET16
GET16:
ldrh r0,[r0]
bx lr
.thumb_func
.globl dummy
dummy:
bx lr
.end
Vâng, nó nói cortex-m0 nhưng đây là bootstrap thực tế cho mã m4 của tôi. Tôi thích điều này là ngón tay cái không phải ngón tay cái2. Và tôi chỉ sử dụng lại mã này từ cortex-m này sang mã khác, thay đổi địa chỉ con trỏ ngăn xếp khi cần, vì vậy nó hoạt động cho m0, m3 và m4. Tôi chưa có m7 và tôi cũng chưa nghiên cứu nhiều về nó.
Việc kích hoạt fpu có thể cần thêm một vài dòng asm vì cần có hướng dẫn cụ thể. Nhưng vấn đề là không nhầm lẫn giữa lập trình cấp thấp và asm. C có những gì bạn cần để cấu hình chip, cũng như viết một ứng dụng. Các thư viện mà bạn đang nói đến được viết bằng C không phải là asm, vì vậy rõ ràng họ cũng không cần sử dụng asm.
Nếu bạn muốn tìm hiểu các hoạt động bên trong, viết mã của riêng bạn. Không sử dụng các thư viện này ngoài mục đích tham khảo. Đôi khi việc hack nó dễ dàng hơn là cố gắng đọc qua mã của họ. (không chỉ ST mà tất cả các nhà cung cấp. Một trong những nhà cung cấp có một dòng mã rất đáng báo động. Tôi sử dụng nó như một câu hỏi phỏng vấn, không phải sẽ đăng nó ở đây).
ST chắc chắn nhưng các nhà cung cấp khác cũng vậy, để tiết kiệm năng lượng, có đồng hồ cho phép các phần của chip, vì vậy trước khi bạn đi vào và cố gắng nháy đèn led, bạn cần tìm bit kích hoạt cho khối gpio đó và xem liệu nó có xuất hiện không nếu thiết lập lại được kích hoạt, nếu không thì kích hoạt nó, nói chuyện với logic gpio đó mà không có đồng hồ cho phép nó chỉ đơn giản là treo bộ xử lý vì nó đang chờ phản hồi từ logic sẽ không bao giờ phản hồi. Họ không luôn luôn nói với bạn về những cho phép này. Sau khi kích hoạt, đôi khi họ sẽ đưa bạn qua init cho một số thiết bị ngoại vi cụ thể. Tài liệu ST khá tốt. Đến từ microchip đạt điểm khá tệ cho tài liệu, bạn không nên có vấn đề gì.
Libraries/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h
hoặcDrivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h
tương ứng.