Tôi có thể chạy phần mềm hardfp trên kernel softfp không?


Câu trả lời:


7

Không, phần mềm được biên dịch cho hardfp sẽ không hoạt động trên hệ thống softfp, vì các quy ước gọi khác nhau - các quy ước float mềm liên quan đến việc chuyển float qua các thanh ghi số nguyên (mặc dù về mặt kỹ thuật, kernel không phải là vấn đề thực sự - vấn đề là liên kết và tất cả các thư viện tiêu chuẩn). Đây là lý do tại sao dự án Raspbian là một công việc lớn như vậy, vì mọi thứ cần phải cứng rắn từ đầu. Tuy nhiên, bây giờ chúng tôi có một hình ảnh Raspbian chính thức với sự hỗ trợ đầy đủ của hardfp, dường như không còn lý do nào để phát triển cho các hệ thống softfp nữa. Tôi sẽ đề nghị thay đổi chuỗi công cụ của bạn để tạo hardfp, sử dụng các tùy chọn gcc như:

gcc -O2 -march = armv6 -mfpu = vfp -mfloat-abi = cứng

vì điều này sẽ tạo mã phù hợp để sử dụng với hình ảnh Raspbian mới. Cờ diễu hành chỉ định họ bộ xử lý và các cờ mfpu và mfloat xác định rằng các lệnh nổi cứng và các quy ước gọi có thể được sử dụng.

Thay thế cho cờ -march, thay vào đó, bạn có thể sử dụng "-mcpu = arm1176jzf-s", chỉ định chip thực tế được sử dụng trong Pi.


Hoặc sử dụng chuỗi công cụ mà Quỹ cung cấp trên GitHub.
Jivings

@Jivings Nếu bạn tải xuống của họ gcc, bạn vẫn phải chỉ định marchvv?
Alex Chamberlain

@AlexChamberlain Tôi sẽ không nghĩ như vậy.
Jivings

Vì vậy, là -march = armv6 vv được tích hợp vào mỗi gcc?
Alex Chamberlain

Vì vậy, gcc -march = armv6 có thực hiện nhị phân khác không? Làm thế nào nó hoạt động?
Alex Chamberlain
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.