Lucky Man
Lucky Man

Reputation: 1518

"RL-ARM Library" and "CMSIS Library" alternatives

I work with MCB1700 Evaluation board. Keil provides developer with RL-ARM Library. But some hours ago I founded CMSIS Librariy. It also has headers and c-files for USB, Ethernet etc. (with examples). What are the differences between "RL-ARM Library" and "CMSIS Library"? Are the alternatives of RL-ARM and CMSIS Libraries exist?

Upvotes: 2

Views: 1575

Answers (2)

Clifford
Clifford

Reputation: 93476

RL-ARM includes the RTX RTOS kernel; the file-system, networking, CAN and USB support that it provides integrate with RTX to make them thread-safe.

If you use an alternative RTOS, you will have to deal with thread-safety at teh driver/middleware level yourself. Most middle ware libraries have mutex call hooks to deal with this.

CMSIS drivers are generally much lower level than RL-ARM (which may in fact use the CMSIS drivers in any case). For example while you may have Ethernet drivers, CMSIS does not provide higher level TCP/IP stack.

The CMSIS compliant libraries will have been provided by the chip vendor rather than Keil. In my experience, Keil's distribution is often behind the vendor's release, so you should get your CMSIS libraries from the chip vendor directly.

All Cortex-M vendors should provide a CMSIS library for their parts. CMSIS includes start-up code as well as peripheral libraries. While CMSIS defines some standards, because peripherals are vendor specific, there is little or no portability between different vendor's CMSIS. In fact even changing from STM32F1xx to F2xx is a drastic change! RL-ARM on the other hand is a higher level of abstraction, and is portable across all parts supported by Keil.

Upvotes: 4

Richard
Richard

Reputation: 21

RLARM is Keil's propitiatory library suite that implements various different middleware components. I think, other than the kernel, it is provided as libraries.

CMSIS is a Cortex-M abstration layer that provides a common interface to the Cortex-M registers and various different libraries - it does not actually implement any middleware itself.

Upvotes: 2

Related Questions