ThanhNT Blog's

Computer, Networking, Embedded Systems, PCB Design

Embedded Development Posts

Một số lỗi hay gặp khi phát triển phần mềm nhúng - Phần 2

Lỗi khi phát triển phần mềm nhúng Là một lập trình viên đôi lúc bạn sẽ phải thốt lên: Ơ hay, vừa mới chạy ngon mà giờ bây giờ lại lỗi được. Sao ban nãy vừa chạy xong, thêm có đúng một lệnh xxx vào mà nó lại không chạy nhỉ? Móa, lại treo à, reset lại giúp tôi với. Trong quá trình phát triển có lẽ chúng ta thường xuyên phải đối mặt với những tình huống không ai muốn đó.

Tạo file .bin, .hex sử dụng Keil C

Tạo file *.hex dùng Keil C File *.hex, *.bin là 2 định dạng đầu ra được sử dụng rất nhiều khi biên dịch chương trình dùng cho vi điều khiển. Mỗi định dạng có ưu điểm khác nhau và được sử dụng cho các mục đích tương ứng. Keil C hỗ trợ tạo file .hex một cách rất nhẹ nhàng. Các bạn mở Keil C, nhấn Option, chọn thẻ Output, tick chọn Create HEX file, nhấn OK.

[Linux] Truyền file qua giao tiếp Serial

ZMODEM - Giao thức truyền file qua kết nối Serial Trên một board Embedded Linux (đã bị bỏ cổng Ethernet), để có thể truyền file vào board thì người ta có thể truyền file qua giao tiếp Serial (Cổng giao tiếp này có mặt trên hầu như tất cả các sản phẩm nhúng - mục đích để giao tiếp hoặc debug hệ thống). Bạn cũng có thể custom phương pháp này để sử dụng cho các bo mạch nhúng khác.

Lập trình firmware: Bit significant, Bit shifting

Bit significant, Bit shifting Phân biệt MSB và LSB a, msb và lsb (Chữ thường) msb: most significant bit lsb: least significant bit Hai khái niệm này được dùng trong phạm vi 1 byte. msb là cái bít quan trọng nhất ở byte đó. Hiểu đơn giản, byte nào mà mất cái bit này đi(gán bít này bằng 0) thì giá trị của byte đó bị thay đổi đáng kể (có khi là đổi trắng thay đen, đổi từ âm sang dương :D) lsb thì ngược lại.

Fix lỗi ST-Link - No target connected với STM32CubeF1 v1.4

Lỗi No target connected ST-Link trên KeilC Lỗi “No target connected” là khi máy tính vẫn nhận mạch nạp ST-Link nhưng lại không nhận ra chip. Bài viết này cụ thể là đề cập đến dòng chip F1, có thể tham khảo với dòng chip khác với lỗi tương tự. Phần cứng sử dụng MCU STM32F103RCT6 Hỗ trợ nạp qua Bootloader, SWD (ST-Link v2) Tình trạng lỗi Chương trình biên dịch KeilC v5.

Giải phẫu một viên pin sạc Lithium-Ion có mạch bảo vệ

Mạch bảo vệ pin sạc Li-ion Bài viết mô tả quá trình giải phẫu rất chi tiết một viên pin sạc có mạch bảo vệ được dịch từ trang Lygate-info Cấu trúc 1 viên pin sạc Một viên pin có mạch bảo vệ (hi vọng là thế) gồm những thành phần bảo vệ như sau: PTC, bảo vệ chống quá nhiệt, gián tiếp bảo vệ chống quá dòng và sẽ tự động reset.

[Review] Code C theo chuẩn - Embedded C Coding Standard (Michael Barr)

Embedded C Coding Standard Bài viết này sẽ note ra vài điều mà tôi có được sau khi đọc cuốn ebook như trên tiêu đề - Code C nhúng theo chuẩn (Embedded C Coding Standard - Michael Barr). Code theo chuẩn Tại sao phải code theo chuẩn? Từ trước đến giờ code vẫn chạy ngon, có vấn đề gì đâu? Trong quá trình học lập trình cơ bản và giờ là lập trình nhúng, khi tham khảo và phát triển mã nguồn thì tôi thường hay gặp chung 1 vấn đề, đó là các mã nguồn được viết không theo 1 chuẩn nào cả.

[Hệ thống] Tràn bộ nhớ Stack

Bộ nhớ Stack Stack là gì Stack là vùng nhớ dành cho các biến local, địa chỉ của bộ đếm chương trình. Trong ứng dụng nhúng với tài nguyên giới hạn, phần mềm nếu thiết kế không tốt có thể dẫn đến tràn stack , từ đó gây ra những lỗi với hiện tượng khó xác đinh lúc runtime. Để tránh việc này, các nhà lập trình được khuyến cáo không khai báo một mảng local quá lớn và không dùng đệ quy trong các ứng dụng nhúng.

Sửa lỗi Flash Download Failed khi lập trình TivaC

Lỗi Flash Download Failed Trong quá trình nạp chương trình xuống con TivaC Series TM4C123G LaunchPad, mình có gặp lỗi Flash Download Failed khiến cho việc nạp chương trình thất bại, tưởng chừng như con vi xử lý đã thành cục gạch. Bài viết này sẽ giúp bạn cứu lại chiếc LaunchPad đó. Nguyên nhân Tình trạng lỗi như sau: sau khi tiến hành Build project hoàn tất, khi mình nhất nút Load để tiến hành Download chương trình xuống board thì xuất hiện lỗi:

Xử lý lỗi tự thoát Debug của Keil uVision

Kiel uVision tự thoát Mô tả lỗi Sau khi quá trình compile hoàn tất, tiến hành download code xuống Launchpad như bình thường, quá trình này cũng diễn ra suôn sẻ. Đến khi nhấn Ctrl+F5 để vào chế độ Debug (debug session), chương trình Keil uVision (ver 4) nhảy qua chế độ Debug nhưng chưa kịp nhấn nút Run (hoặc F5) để chạy chương trình thì Keil tự động thoát khỏi chế độ Debug!