PicoLibc một thư viện C dành cho các hệ thống nhúng có tài nguyên hạn chế

Nhúng-C-

Keith Packard là một nhà phát triển Debian đang hoạt động và nó cũng là Trưởng dự án X.Org và cũng là người sáng tạo của nhiều phần mở rộng X, bao gồm XRender, XComposite và XRandR. PicoLibc là một tác phẩm khác của anh ấy và đây là thư viện C được phát triển để sử dụng trong các thiết bị nhúng với tài nguyên hạn chế (nghĩa là chúng có ít không gian lưu trữ cố định và RAM). Trong quá trình phát triển, một số mã đã được mượn từ thư viện newlib của dự án Cygwin và AVR Libc, được phát triển cho bộ vi điều khiển Atmel AVR.

Keith Packard bắt đầu phát triển sau khi anh không tìm được phiên bản Libc phù hợp, có thể sử dụng trên các thiết bị nhúng RAM thấp. Dự án đã được phát triển từ năm ngoái. Trong giai đoạn đầu, dự án là một biến thể newlib, trong đó các chức năng stdio đã được thay thế bằng phiên bản thu gọn của avrlibc (stdio trong newlib không được điều chỉnh để sử dụng nhiều tài nguyên).

Vì các hoạt động hiện tại của Trung Quốc liên quan đến công việc liên tục về kiến ​​trúc RISC-V và phát triển các công cụ cho các thiết bị nhúng, nên gần đây đã kiểm tra trạng thái triển khai libc y kết luận của cái gì, với một chút tinh chỉnh, sự kết hợp của newlib và avrlibc có thể là một giải pháp phổ quát tốt. Ban đầu, dự án được phát triển dưới tên "newlib-nano", nhưng để tránh nhầm lẫn với thư viện Newlib, nó đã được đổi tên thành PicoLibc.

Về PicoLibc

Ở dạng hiện tại, Picolibc đã thực hiện công việc xóa tất cả mã không được cung cấp theo giấy phép BSD (Mã này không được sử dụng trong lắp ráp cho các thiết bị nhúng), điều này giúp đơn giản hóa rất nhiều tình huống với giấy phép dự án.

Việc triển khai cục bộ luồng đã được chuyển từ cơ chế 'struct _reent' sang TLS (Lưu trữ cục bộ của luồng). Phiên bản nhỏ gọn của stdio được bật theo mặc định, được lấy từ mã thư viện avrlibc (các phần chèn trình hợp dịch cụ thể của ATmel được viết lại bằng C).

Các công cụ của Meson được sử dụng để biên dịch, gì cho phép bạn không đính kèm tập lệnh newlib và đơn giản hóa việc chuyển các thay đổi từ newlib. Một phiên bản đơn giản của mã khởi tạo (crt0) đã được thêm vào, đính kèm vào tệp thực thi và được thực thi trước khi chuyển quyền điều khiển sang hàm main ().

Mã nguồn của PicoLibc được phân phối theo giấy phép BSD và thư viện hỗ trợ kiến ​​trúc ARM (32-bit), i386, RISC-V, x86_64 và PowerPC.

Giới thiệu về phiên bản mới của PicoLibc 1.1

Gần đây, tôi đã trình bày việc phát hành phiên bản mới của PicoLibc 1.1, trong đó một thư viện trợ giúp đã được thêm vào để hỗ trợ công nghệ bán lưu trữ, A cho phép mã chạy trong môi trường trình gỡ lỗi hoặc trình giả lập sử dụng cơ chế đầu vào / đầu ra từ hệ thống máy chủ.

Đối với các hệ thống hỗ trợ lệnh gọi hệ thống mở, đóng, đọc và ghi, tinystdio thêm giao diện I / O POSIX tiêu chuẩn hóa, bao gồm các hàm fopen và fdopen, cũng như liên kết của stdin / stdout / stderr với các bộ mô tả tệp do POSIX xác định.

  • Những thay đổi gần đây đã được chuyển từ cơ sở mã newlib. Bao gồm các gốc libm bổ sung cho fenv.h, có thể được sử dụng trên các hệ thống mà không cần hỗ trợ tính toán.
  • Đã thêm ví dụ biên dịch ứng dụng Hello World với picolibc cho hệ thống ARM và RISC-V, ngoài việc xóa các thư mục newlib, libm và mathfp chứa mã thử nghiệm không được sử dụng.

Bắt đầu sử dụng Picolibc

Để bắt đầu với Picolibc, bạn nên biết rằng Picolibc sử dụng hệ thống xây dựng meson để biên dịch cho các nền tảng phần cứng khác nhau trên máy chủ Linux bằng GCC. Đó là lý do tại sao họ phải có meson như một phần của môi trường phát triển, ngoài việc cài đặt Python 3 và Ninja. Đối với điều này, bạn có thể tham khảo hướng dẫn của nó Trong liên kết sau đây. 

Cuối cùng, để lấy mã Picolibc, bạn có thể thực hiện từ liên kết sau, nơi bạn có thể tìm thấy các tài liệu cần thiết. 

Hoặc theo cách tương tự, họ có thể tham khảo hướng dẫn sau đây tôi tìm thấy trên mạng và có thông tin chi tiết.


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.