ThanhNT Blog's

Computer, Networking, Embedded Systems, PCB Design

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 đó.

Bảo mật đối với các thiết bị IoT

Bảo mật đối với các thiết bị IoT Bảo mật là mối quan tâm hàng đầu cho Internet of Things, nó quan trọng không kém gì vấn đề tối ưu năng lượng tiêu thụ, chi phí, cũng như khả năng kết nối không dây. Do các thiết bị IoT được tối ưu hóa cho việc sử dụng năng lượng thấp và chi phí vận hành, vì thế tài nguyên sử dụng cho tính toán không nhiều.

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.

[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.

Lập trình firmware: Từ khóa Volatile trong C

Giới thiệu Trong lập trình nhúng (Embedded system development), ta rất thường hay gặp khai báo biến với từ khóa volatile. Việc khai báo biến volatile là rất cần thiết để tránh những lỗi sai khó phát hiện do tính năng optimization của compiler. Trong bài viết này, ta sẽ tìm hiểu ý nghĩa của từ khóa này, cách sử dụng nó và giải thích tại sao nó quan trọng trong một số trường hợp lập trình với hệ thống nhúng và lập trình ứng dụng đa luồ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:

RTOS - Lắp thêm cánh cho vi điều khiển

Vi điều khiển (MCU) chính là trung tâm của hệ thống nhúng và sức mạnh của hệ thống này sẽ được tiêm thêm liều “doping” với một hệ điều hành thời gian thực RTOS (Real Time Operating System). Vậy RTOS là gì? RTOS là một hệ điều hành đa nhiệm trong đó các tác vụ được thực thi một cách song song đối với người dùng. Ở đây ta không đi sâu vào kiến trúc bên trong của Kernel, cách thức chuyển tác vụ,… mà tập trung vào giới thiệu cách thức triển khai một RTOS trên một platform của vi điều khiển.