Adding new board support
Hi, I am having a board which is customized for our requirement and it is based on cortex-a8 arm architecture. I want to add the board support for this in linux kernel. From where can i start to get it work...? Any tutorial for this to be done...? Thanks and Regards, Varka Bhadram ------------------------------------------------------------------------------------------------------------------------------- [ C-DAC is on Social-Media too. Kindly follow us at: Facebook: https://www.facebook.com/CDACINDIA & Twitter: @cdacindia ] This e-mail is for the sole use of the intended recipient(s) and may contain confidential and privileged information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies and the original message. Any unauthorized review, use, disclosure, dissemination, forwarding, printing or copying of this email is strictly prohibited and appropriate legal action will be taken. -------------------------------------------------------------------------------------------------------------------------------
Might be a good thing to start with something easier. If you can't navigate the source tree well enough to find the relevant code you will have a hard time rewriting stuff for different hardware. On Fri, Jun 6, 2014 at 11:40 AM, Varka Bhadram <varkab@cdac.in> wrote:
Hi,
I am having a board which is customized for our requirement and it is based on cortex-a8 arm architecture.
I want to add the board support for this in linux kernel. From where can i start to get it work...?
Any tutorial for this to be done...?
Thanks and Regards, Varka Bhadram
------------------------------------------------------------------------------------------------------------------------------- [ C-DAC is on Social-Media too. Kindly follow us at: Facebook: https://www.facebook.com/CDACINDIA & Twitter: @cdacindia ]
This e-mail is for the sole use of the intended recipient(s) and may contain confidential and privileged information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies and the original message. Any unauthorized review, use, disclosure, dissemination, forwarding, printing or copying of this email is strictly prohibited and appropriate legal action will be taken. -------------------------------------------------------------------------------------------------------------------------------
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
On Sat, Jun 7, 2014 at 12:40 AM, Kristofer Hallin <kristofer.hallin@gmail.com> wrote:
Might be a good thing to start with something easier. If you can't navigate the source tree well enough to find the relevant code you will have a hard time rewriting stuff for different hardware.
On Fri, Jun 6, 2014 at 11:40 AM, Varka Bhadram <varkab@cdac.in> wrote:
Hi,
I am having a board which is customized for our requirement and it is based on cortex-a8 arm architecture.
I want to add the board support for this in linux kernel. From where can i start to get it work...?
Any tutorial for this to be done...?
Thanks and Regards, Varka Bhadram
------------------------------------------------------------------------------------------------------------------------------- [ C-DAC is on Social-Media too. Kindly follow us at: Facebook: https://www.facebook.com/CDACINDIA & Twitter: @cdacindia ]
This e-mail is for the sole use of the intended recipient(s) and may contain confidential and privileged information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies and the original message. Any unauthorized review, use, disclosure, dissemination, forwarding, printing or copying of this email is strictly prohibited and appropriate legal action will be taken. -------------------------------------------------------------------------------------------------------------------------------
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Hi Varka, I would suggest you the following:- 1. Create a config file under arch/arm/configs/ for your board. You may refer to any of the standard configuration which closely resembles your board's configuration. To start with enable the basic configurations such as processor, timer, uart, etc and disable SMP which are the bare minimum requirements for the board to boot. 2. Add a folder under arch/arm/<mach-yourplatformname>. Add board.c where your can register your platform devices such as pcie, nand, usb, uart, gpio, rtc etc 3, Under the same folder above, add timer.c to initialize your timers.Add clock.c to enable/disable clocks and change clock rate of various Functional Blocks. Add <yourplatformname.c> to initialize your processor specific details such as global timers, arm pmu, interrupts, cache, global dma, ACP, SCU and inter-processor interrupt( if later you decide to enable SMP) 4. It is advisable to refer to a standard platform (like versatile - express ) to understand the board specific configurations in Linux. Hope this helps to get you started, Regards, Ayan Kumar Halder
Thank you for the guidence... Is there any tutorial to how to do the development for the board. ? Thanks, -Varka Bhadram On June 7, 2014 at 12:57 PM AYAN KUMAR HALDER <ayankumarh@gmail.com> wrote:
On Sat, Jun 7, 2014 at 12:40 AM, Kristofer Hallin <kristofer.hallin@gmail.com> wrote:
Might be a good thing to start with something easier. If you can't navigate the source tree well enough to find the relevant code you will have a hard time rewriting stuff for different hardware.
On Fri, Jun 6, 2014 at 11:40 AM, Varka Bhadram <varkab@cdac.in> wrote:
Hi,
I am having a board which is customized for our requirement and it is based on cortex-a8 arm architecture.
I want to add the board support for this in linux kernel. From where can i start to get it work...?
Any tutorial for this to be done...?
Thanks and Regards, Varka Bhadram
------------------------------------------------------------------------------------------------------------------------------- [ C-DAC is on Social-Media too. Kindly follow us at: Facebook: https://www.facebook.com/CDACINDIA & Twitter: @cdacindia ]
This e-mail is for the sole use of the intended recipient(s) and may contain confidential and privileged information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies and the original message. Any unauthorized review, use, disclosure, dissemination, forwarding, printing or copying of this email is strictly prohibited and appropriate legal action will be taken. -------------------------------------------------------------------------------------------------------------------------------
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Hi Varka,
I would suggest you the following:- 1. Create a config file under arch/arm/configs/ for your board. You may refer to any of the standard configuration which closely resembles your board's configuration. To start with enable the basic configurations such as processor, timer, uart, etc and disable SMP which are the bare minimum requirements for the board to boot. 2. Add a folder under arch/arm/<mach-yourplatformname>. Add board.c where your can register your platform devices such as pcie, nand, usb, uart, gpio, rtc etc 3, Under the same folder above, add timer.c to initialize your timers.Add clock.c to enable/disable clocks and change clock rate of various Functional Blocks. Add <yourplatformname.c> to initialize your processor specific details such as global timers, arm pmu, interrupts, cache, global dma, ACP, SCU and inter-processor interrupt( if later you decide to enable SMP) 4. It is advisable to refer to a standard platform (like versatile - express ) to understand the board specific configurations in Linux.
Hope this helps to get you started,
Regards, Ayan Kumar Halder
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
[ C-DAC is on Social-Media too. Kindly follow us at: Facebook: https://www.facebook.com/CDACINDIA & Twitter: @cdacindia ] This e-mail is for the sole use of the intended recipient(s) and may contain confidential and privileged information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies and the original message. Any unauthorized review, use, disclosure, dissemination, forwarding, printing or copying of this email is strictly prohibited and appropriate legal action will be taken. -------------------------------------------------------------------------------------------------------------------------------
On Mon, Jun 9, 2014 at 10:35 AM, Varka Bhadram <varkab@cdac.in> wrote:
Thank you for the guidence...
Is there any tutorial to how to do the development for the board. ?
Hi I work in Vector Institute and I have done a similar development for our own custom designed board based on iMX. I have not found any tutorial for creating the BSP , just look at the other board configurations and you will have an idea about how to start it. But let me assure you that it will be a very frustrating when u spend 2 - 3 days to make a code and when you test it , you see that its not working and you need to start all over again .. but ultimately its fun , and when the board boots you will get a kind of satisfaction which can not be compared with any other thing ..
Adding to others If you are working on latest kernel versions, make sure to add Device tree file as well in arch/arm/boot/dts/ Thanks, Vignesh Radhakrishnan On Mon, Jun 9, 2014 at 11:16 AM, Sudip Mukherjee <sudipm.mukherjee@gmail.com> wrote:
On Mon, Jun 9, 2014 at 10:35 AM, Varka Bhadram <varkab@cdac.in> wrote:
Thank you for the guidence...
Is there any tutorial to how to do the development for the board. ?
Hi I work in Vector Institute and I have done a similar development for our own custom designed board based on iMX. I have not found any tutorial for creating the BSP , just look at the other board configurations and you will have an idea about how to start it. But let me assure you that it will be a very frustrating when u spend 2 - 3 days to make a code and when you test it , you see that its not working and you need to start all over again .. but ultimately its fun , and when the board boots you will get a kind of satisfaction which can not be compared with any other thing ..
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Hello, On Sat, 7 Jun 2014 12:57:34 +0530, AYAN KUMAR HALDER wrote:
1. Create a config file under arch/arm/configs/ for your board. You may refer to any of the standard configuration which closely resembles your board's configuration. To start with enable the basic configurations such as processor, timer, uart, etc and disable SMP which are the bare minimum requirements for the board to boot. 2. Add a folder under arch/arm/<mach-yourplatformname>. Add board.c where your can register your platform devices such as pcie, nand, usb, uart, gpio, rtc etc 3, Under the same folder above, add timer.c to initialize your timers.Add clock.c to enable/disable clocks and change clock rate of various Functional Blocks. Add <yourplatformname.c> to initialize your processor specific details such as global timers, arm pmu, interrupts, cache, global dma, ACP, SCU and inter-processor interrupt( if later you decide to enable SMP) 4. It is advisable to refer to a standard platform (like versatile - express ) to understand the board specific configurations in Linux.
Sorry to say so, but those recommendations are quite wrong when the goal is to add the support for a new _board_ in the kernel. What you're describing here are roughly the steps to add the support for a new SoC or family of SoC. If what's needed is adding support for a new board that uses an ARM SoC already supported by the kernel, then all what's needed is either writing a Device Tree file (if the ARM SoC in question is supported through the Device Tree) or writing a board file in an existing mach-<foo> folder. Best regards, Thomas -- Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
Also It is depends on Kernel Version you are trying to add support for New Board.If your Kernel version doesn't support device tree blob then adding some Board files would be sufficient enough and you can also take reference from the other Board which is similar to your Board. Regards Sanjeev Sharma On Sat, Jun 14, 2014 at 9:29 PM, Thomas Petazzoni < thomas.petazzoni@free-electrons.com> wrote:
Hello,
On Sat, 7 Jun 2014 12:57:34 +0530, AYAN KUMAR HALDER wrote:
1. Create a config file under arch/arm/configs/ for your board. You may refer to any of the standard configuration which closely resembles your board's configuration. To start with enable the basic configurations such as processor, timer, uart, etc and disable SMP which are the bare minimum requirements for the board to boot. 2. Add a folder under arch/arm/<mach-yourplatformname>. Add board.c where your can register your platform devices such as pcie, nand, usb, uart, gpio, rtc etc 3, Under the same folder above, add timer.c to initialize your timers.Add clock.c to enable/disable clocks and change clock rate of various Functional Blocks. Add <yourplatformname.c> to initialize your processor specific details such as global timers, arm pmu, interrupts, cache, global dma, ACP, SCU and inter-processor interrupt( if later you decide to enable SMP) 4. It is advisable to refer to a standard platform (like versatile - express ) to understand the board specific configurations in Linux.
Sorry to say so, but those recommendations are quite wrong when the goal is to add the support for a new _board_ in the kernel. What you're describing here are roughly the steps to add the support for a new SoC or family of SoC.
If what's needed is adding support for a new board that uses an ARM SoC already supported by the kernel, then all what's needed is either writing a Device Tree file (if the ARM SoC in question is supported through the Device Tree) or writing a board file in an existing mach-<foo> folder.
Best regards,
Thomas -- Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
participants (7)
-
AYAN KUMAR HALDER -
Kristofer Hallin -
sanjeev sharma -
Sudip Mukherjee -
Thomas Petazzoni -
Varka Bhadram -
Vignesh Radhakrishnan