Skip to content

Support TI Hercules SoC #19644

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
4 of 32 tasks
stephanosio opened this issue Oct 7, 2019 · 7 comments
Closed
4 of 32 tasks

Support TI Hercules SoC #19644

stephanosio opened this issue Oct 7, 2019 · 7 comments
Assignees
Labels
area: ARM ARM (32-bit) Architecture Meta A collection of features, enhancements or bugs platform: TI Texas Instruments

Comments

@stephanosio
Copy link
Member

stephanosio commented Oct 7, 2019

This is an epic for Texas Instruments Hercules™ SoC support.

Hercules™ is a family of system-on-chips from Texas Instruments that focuses on functional safety for mission-critical automotive and industrial applications. This SoC, depending on series, embeds a Cortex-R4(F) or Cortex-R5F processor as well as a number of built-in hardware error detection and recovery blocks.

This task aims to expand the application of Zephyr RTOS to industrial sectors where functional safety and system reliability are primarily of concern, and provide a reference platform for functional safety certification, such as IEC 61508 and ISO 26262.

Phase 1 Tasks
Implement basic platform support to get the kernel up and running

Phase 2 Tasks
Implement safety-critical hardware block support

  • #TBD Implement Hercules PBIST (programmable built-in self-test) support
  • #TBD Implement Hercules STC (self-test controller) support
  • #TBD Implement Hercules CCM (CPU compare module) support
  • #TBD Implement Hercules DCC (dual-clock comparator) support
  • #TBD Implement Hercules ESM (error signaling module) support
  • #TBD Implement Hercules CRC (cyclic redundancy check) support
  • #TBD Implement Hercules safety subsystem (NOTE: This subsystem should utilise the safety-critical hardware blocks above to check for system errors and implement a recovery mechanism for each scenario)

Phase 3 Tasks
Implement peripheral hardware block support

  • #TBD Implement Hercules ADC support
  • #TBD Implement Hercules N2HET support (NOTE: N2HET is a timer coprocessor for handling specialised I/O tasks)
  • #TBD Implement Hercules I2C support
  • #TBD Implement Hercules SPI support
  • #TBD Implement Hercules CAN support
  • #TBD Implement Hercules LIN support (NOTE: LIN support should be added to the existing SCI driver implementation from Phase 1)
  • #TBD Implement Hercules USB support
  • #TBD Implement Hercules Ethernet support

Note

  • The drivers generated by TI HALCoGen are licensed under the 3-clause BSD licence which, I suppose, should not be a problem. A further discussion on how to integrate them into the Zephyr project will have to be made.
  • A series of pull requests and/or issues for each task will be created in the future.
  • The development phase 1 aims to provide basic platform support and therefore its task list consists only of the essential tasks that are required to get the platform up and running. More essential tasks, if deemed necessary, may be added.
  • The development phase 2 and 3 may be executed in parallel if more devs are willing to join this effort; however, they must be executed after phase 1 as the base platform definitions must be available in order to implement them.
@stephanosio stephanosio added the Feature Request A request for a new feature label Oct 7, 2019
@carlescufi
Copy link
Member

The drivers generated by TI HALCoGen are licensed under the 3-clause BSD licence which, I suppose, should not be a problem. A further discussion on how to integrate them into the Zephyr project will have to be made.

This should not be a problem at all. We already have 3-clause BSD license drivers in our modules/hal folders.

@carlescufi carlescufi added the area: ARM ARM (32-bit) Architecture label Oct 7, 2019
@ioannisg
Copy link
Member

ioannisg commented Oct 9, 2019

Add non-Cortex-M CMSIS variants to the Zephyr codebase (minor refactoring will be required)

Can you create a separate issue for that?

@stephanosio
Copy link
Member Author

Add non-Cortex-M CMSIS variants to the Zephyr codebase (minor refactoring will be required)

Can you create a separate issue for that?

@ioannisg #19717

@stephanosio stephanosio added the platform: TI Texas Instruments label Oct 18, 2019
@stephanosio stephanosio self-assigned this Oct 18, 2019
@stephanosio stephanosio mentioned this issue Nov 12, 2019
25 tasks
@stephanosio stephanosio added the Meta A collection of features, enhancements or bugs label Jan 7, 2020
@legath
Copy link

legath commented Jan 17, 2021

is hal must be created from HALCOGEN library? or could i try to write more simple support?
just want to help with this port...

@stephanosio
Copy link
Member Author

is hal must be created from HALCOGEN library? or could i try to write more simple support?
just want to help with this port...

@legath I was suggesting that we use the drivers generated by the HALCoGen either as whole or in part. The peripheral register mapping files such as reg_*.h can be used as is, and some core peripheral drivers such as BIST and VIM can be also used with no or minimal modifications. As for the rest, we could write custom Zephyr-specific driver implementations as necessary using the peripheral register mapping files provided by the HALCoGen.

Have a look here:
https://github.com/stephanosio/hal_ti/tree/hercules_support/hercules

@nashif nashif added Hardware Support and removed Feature Request A request for a new feature labels May 28, 2021
@stephanosio stephanosio removed their assignment May 4, 2022
@henrikbrixandersen henrikbrixandersen added the Enhancement Changes/Updates/Additions to existing features label Nov 17, 2022
@nashif nashif removed the Enhancement Changes/Updates/Additions to existing features label Nov 18, 2022
@stephanosio
Copy link
Member Author

Closing since I lack the bandwidth to upstream this. Please feel free to re-open if someone else is planning to take over.

@stephanosio stephanosio closed this as not planned Won't fix, can't repro, duplicate, stale Feb 9, 2024
@Mcode5A
Copy link

Mcode5A commented Jan 28, 2025

@stephanosio I would like to reopen and contribute to it, I'm currently at a project with that setup and we have to make it work. Thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area: ARM ARM (32-bit) Architecture Meta A collection of features, enhancements or bugs platform: TI Texas Instruments
Projects
None yet
Development

No branches or pull requests