2015-12-22 11 views
6

Tôi đang làm việc với một hệ thống nhúng. Ứng dụng đang chạy trên AT91SAMxxxx và cortex m3 lpc17xxx. Tôi đang tìm kiếm vào phân bổ bộ nhớ động vì nó sẽ thay đổi đáng kể bộ mặt của ứng dụng (và cho tôi nhiều quyền lực hơn).malloc trong các hệ thống nhúng

Tôi nghĩ tuyến đường thực sự duy nhất của tôi là đặt ra một khu vực bộ nhớ cho một đống và thiết kế một malloc phù hợp nhất (pun) mục đích của tôi.

Khi xem các thuật toán khác nhau để cấp phát bộ nhớ, bạn không thể vấp ngã khi quảng cáo của Doug Lea. Tôi lấy nó này đã được sử dụng trong các hệ thống nhúng như của tôi, nơi không có hệ điều hành và các phiên bản phù hợp của hàm sbrk() đã được cung cấp để thực hiện điều này. Tôi đang cố gắng tìm ra những ví dụ điển hình về điều này để đạt được để có thể thử một bằng chứng về khái niệm trước khi tôi nhảy vào viết của riêng mình.

Có thể sử dụng dlmalloc trong hệ thống như của tôi không?

Nếu có, mọi người có thể chỉ cho tôi một tài nguyên liên quan không? (không tìm thấy nhiều người giúp tôi)

Tốt hơn là đi và viết malloc của riêng tôi được điều chỉnh theo nhu cầu của tôi?

Và xin lỗi hầu hết các nghiên cứu của tôi cho đến nay đã được thiết kế một malloc không sử dụng doug của đó là một thách thức khác nhau. Đoán tôi đang cố gắng để tìm hiểu là nhìn vào con đường này trong chiều sâu hơn một sự lãng phí thời gian.

Edit:

đạo đức của câu chuyện: nhìn vào dlmalloc trong trường hợp của tôi vô nghĩa.

+0

Bạn có thực sự cần phân bổ bộ nhớ động trong ứng dụng nhúng của mình không? –

+2

Các đặc điểm thực tế của phân bổ bạn cần hỗ trợ là gì? Bằng cách cụ thể hơn có lẽ bạn/chúng tôi có thể đưa ra một giải pháp lý tưởng hơn. –

+2

Nó phụ thuộc rất nhiều vào bản chất phân bổ của bạn. Trong nhiều trường hợp, đủ để phân bổ động các khối có kích thước cố định. Điều này sẽ dễ thực hiện hơn nhiều so với phương thức phân bổ chung (mà sẽ có nhiều chi phí hơn về mặt thời gian và memroy, cần phải hợp nhất các khối miễn phí, v.v.). – Ctx

Trả lời

5

Đối với trường hợp của bạn, việc triển khai malloc hoặc dlmalloc của riêng bạn hoàn toàn có thể, nhưng không được khuyến khích.

Trên các hệ thống nhúng ở mức rất thấp, MCU kim loại trần, vv, sử dụng malloc là vô nghĩa.

Bạn sẽ chạy ứng dụng của mình và chỉ ứng dụng trên chúng, bạn biết mình có bao nhiêu bộ nhớ và có thể sử dụng, và bạn có thể điều chỉnh chương trình phù hợp với nhu cầu đó. Với malloc bạn tiết kiệm bộ nhớ, nhưng đó là vô nghĩa ở đây. Nếu chương trình của bạn sử dụng bộ nhớ cao nhất không vượt quá bộ nhớ có sẵn trên thiết bị và chương trình của bạn là chương trình duy nhất đang chạy, không có lý do gì để sử dụng malloc và không có lý do gì để bộ nhớ không được sử dụng.

tl; dr Có thể nhưng cực kỳ vô nghĩa.

+0

Bạn có nghĩa là dlmalloc hoặc phân bổ bộ nhớ động trong tất cả các hình thức? và tôi có thể chỉnh sửa câu hỏi của mình để thêm chi tiết cụ thể hơn cho ứng dụng của tôi nhưng phân bổ bộ nhớ trong thời gian chạy là chắc chắn nhất không phải là vô nghĩa trong trường hợp của tôi. –

+0

xin lỗi bạn đã nói rằng tôi bỏ qua nhận xét ở trên –

Các vấn đề liên quan