7 Nokia Corporation - initial contribution. |
7 Nokia Corporation - initial contribution. |
8 Contributors: |
8 Contributors: |
9 --> |
9 --> |
10 <!DOCTYPE concept |
10 <!DOCTYPE concept |
11 PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> |
11 PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> |
12 <concept id="GUID-5CCF303A-B7D5-570D-9BE8-29DFBE184995" xml:lang="en"><title>Porting |
12 <concept id="GUID-5CCF303A-B7D5-570D-9BE8-29DFBE184995" xml:lang="en"><title>Porting Overview</title><shortdesc>This topic describes the typical steps that you will need |
13 Overview</title><shortdesc>This topic describes the typical steps that you will need to do |
13 to do to create a base port. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody> |
14 to create a base port. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody> |
|
15 <p>The easiest way to create a base port is to take the supplied template |
14 <p>The easiest way to create a base port is to take the supplied template |
16 port and expand it to suit your own hardware configuration(s). The template |
15 port and expand it to suit your own hardware configuration(s). The |
17 port, is an outline, but working, framework that you can modify to suit your |
16 template port, is an outline, but working, framework that you can |
18 own hardware. </p> |
17 modify to suit your own hardware. </p> |
19 <p>The template port can be found under the <filepath>sf/os/kernelhwsrv/bsptemplate/</filepath> directory. |
18 <p>The template port can be found under the <filepath>sf/os/kernelhwsrv/bsptemplate/</filepath> directory. For more information about the template port see <xref href="http://developer.symbian.org/wiki/index.php/Kernel_%26_Hardware_Services_Quick_Start" scope="external">Kernel & Hardware Quick Start Guide</xref>.</p> |
20 For more information about the template port see <xref href="http://developer.symbian.org/wiki/index.php/Kernel_%26_Hardware_Services_Quick_Start.dita">Kernel & Hardware Quick Start Guide</xref>.</p> |
19 <section id="GUID-F8897488-2A94-461D-AA11-7AC2BDA1D3C5"><title>Set |
21 <section id="GUID-F8897488-2A94-461D-AA11-7AC2BDA1D3C5"><title>Set up the environment</title> <p>The first thing to do is |
20 up the environment</title> <p>The first thing to do is to set up your |
22 to set up your environment for building, downloading onto your hardware, and |
21 environment for building, downloading onto your hardware, and testing |
23 testing that the port works. </p> </section> |
22 that the port works. </p> </section> |
24 <section id="GUID-124A8A3A-D114-4A68-9E9E-7062815A8717"><title>Build, download, and test the supplied template port</title> <p>As |
23 <section id="GUID-124A8A3A-D114-4A68-9E9E-7062815A8717"><title>Build, |
25 supplied, the template port is designed to boot on any hardware. It should |
24 download, and test the supplied template port</title> <p>As supplied, |
26 boot successfully, but clearly, the system can do nothing more at this time. |
25 the template port is designed to boot on any hardware. It should boot |
27 A successful boot shows that your build environment has been set up correctly. </p> </section> |
26 successfully, but clearly, the system can do nothing more at this |
28 <section id="GUID-89940537-DA6E-4DE6-9133-74771EB15F6F"><title>Copy and rename the Template port</title> <p>When porting |
27 time. A successful boot shows that your build environment has been |
29 the base to a new platform, you will need to code and build the Variant. This |
28 set up correctly. </p> </section> |
30 provides those hardware dependent services required by the kernel. In nearly |
29 <section id="GUID-89940537-DA6E-4DE6-9133-74771EB15F6F"><title>Copy |
31 all ports, this is split into an ASSP DLL and a Variant DLL. We usually refer |
30 and rename the Template port</title> <p>When porting the base to a |
32 to the ASSP layer and the Variant layer. </p> <p>It is desirable that code |
31 new platform, you will need to code and build the Variant. This provides |
33 that depends only on the properties of the ASSP be segregated from code that |
32 those hardware dependent services required by the kernel. In nearly |
34 depends on details of the system outside the ASSP, so that multiple systems |
33 all ports, this is split into an ASSP DLL and a Variant DLL. We usually |
35 that use the same ASSP can share common code. </p> <p>For example, in the |
34 refer to the ASSP layer and the Variant layer. </p> <p>It is desirable |
36 template reference port, the <filepath>..\template_assp\...</filepath> directory |
35 that code that depends only on the properties of the ASSP be segregated |
37 contains source code that contains the ASSP code, whereas the <filepath>...\template_variant\...</filepath> directory |
36 from code that depends on details of the system outside the ASSP, |
38 contains the code specific to the template board. </p> </section> |
37 so that multiple systems that use the same ASSP can share common code. </p> <p>For example, in the template reference port, the <filepath>..\template_assp\...</filepath> directory contains source code that contains the ASSP code, whereas |
39 <section id="GUID-B43B51BC-9ED4-4737-B738-182DBAF04C25"><title>Code the Bootstrap</title> <p>The bootstrap consists of several |
38 the <filepath>...\template_variant\...</filepath> directory contains |
40 generic source and header files suppplied as part of Symbian platform, and |
39 the code specific to the template board. </p> </section> |
41 a set of platform specific files. You need to create these platform specific |
40 <section id="GUID-B43B51BC-9ED4-4737-B738-182DBAF04C25"><title>Code |
42 files as part of a base port. </p> <p>For details, see <xref href="GUID-53944506-5CA2-52BA-8D5A-9EE72092612B.dita">Bootstrap</xref>. </p> <p>The |
41 the Bootstrap</title> <p>The bootstrap consists of several generic |
43 updated port can then be built, downloaded and tested. </p> </section> |
42 source and header files suppplied as part of Symbian platform, and |
44 <section id="GUID-699C7EE9-A65A-5431-B23D-C5BD80494C09"><title>Implement the |
43 a set of platform specific files. You need to create these platform |
45 interrupt dispatcher</title> <p>An interrupt is a condition that causes the |
44 specific files as part of a base port. </p> <p>For details, see <xref href="GUID-53944506-5CA2-52BA-8D5A-9EE72092612B.dita">Bootstrap</xref>. </p> <p>The updated port can then be built, downloaded and tested. </p> </section> |
46 CPU to suspend normal execution, enter interrupt handling state and jump to |
45 <section id="GUID-699C7EE9-A65A-5431-B23D-C5BD80494C09"><title>Implement |
47 a section of code called an interrupt handler. The ASSP/variant part of the |
46 the interrupt dispatcher</title> <p>An interrupt is a condition that |
48 base port must implement an interrupt dispatcher class to manage interrupts. </p> <p>For |
47 causes the CPU to suspend normal execution, enter interrupt handling |
49 details, see the <xref href="GUID-3C34724F-B476-5329-B0B1-6D5A34294979.dita">Interrupt |
48 state and jump to a section of code called an interrupt handler. The |
50 Dispatcher Implementation Tutorial</xref>. </p> <p>The updated port can then |
49 ASSP/variant part of the base port must implement an interrupt dispatcher |
|
50 class to manage interrupts. </p> <p>For details, see the <xref href="GUID-3C34724F-B476-5329-B0B1-6D5A34294979.dita">Interrupt Dispatcher |
|
51 Implementation Tutorial</xref>. </p> <p>The updated port can then |
51 be built, downloaded and tested. </p> </section> |
52 be built, downloaded and tested. </p> </section> |
52 <section id="GUID-57F05EBC-310B-5288-B35E-CAA27E933590"><title>Implement the |
53 <section id="GUID-57F05EBC-310B-5288-B35E-CAA27E933590"><title>Implement |
53 Asic class</title> <p>The Kernel requires that the ASSP/variant part of the |
54 the Asic class</title> <p>The Kernel requires that the ASSP/variant |
54 base port provides an implementation of the <xref href="GUID-A83A7C3C-7DC0-3B9C-842F-70FCC751365D.dita"><apiname>Asic</apiname></xref> interface. |
55 part of the base port provides an implementation of the <xref href="GUID-A83A7C3C-7DC0-3B9C-842F-70FCC751365D.dita"><apiname>Asic</apiname></xref> interface. This defines a small number of hardware-specific functions |
55 This defines a small number of hardware-specific functions that are used by |
56 that are used by the Kernel. </p> <p>For details, see the <xref href="GUID-E0DCBDCF-C056-53E5-A375-778327F848E4.dita#GUID-E0DCBDCF-C056-53E5-A375-778327F848E4/GUID-39010DA3-632A-5C27-92BF-9AA8B5966EAB">Asic Class Tutorial</xref>. </p> <p>The updated port can then be |
56 the Kernel. </p> <p>For details, see the <xref href="GUID-E0DCBDCF-C056-53E5-A375-778327F848E4.dita#GUID-E0DCBDCF-C056-53E5-A375-778327F848E4/GUID-39010DA3-632A-5C27-92BF-9AA8B5966EAB">Asic |
57 built, downloaded and tested. </p> </section> |
57 Class Tutorial</xref>. </p> <p>The updated port can then be built, downloaded |
58 <section id="GUID-88B8F550-4E17-48FE-8A5A-1961E7F0642F"><title>Port |
58 and tested. </p> </section> |
59 the User-Side Hardware Abstraction (HAL)</title> <p>The User-Side |
59 <section id="GUID-88B8F550-4E17-48FE-8A5A-1961E7F0642F"><title>Port the User-Side Hardware Abstraction (HAL)</title> <p>The |
60 Hardware Abstraction (HAL) component provides a simple interface for |
60 User-Side Hardware Abstraction (HAL) component provides a simple interface |
61 programs to read and set hardware-specific settings, for example, |
61 for programs to read and set hardware-specific settings, for example, the |
62 the display contrast. A base port must define the attributes that |
62 display contrast. A base port must define the attributes that clients can |
63 clients can use on a phone, and implement any functions that are required |
63 use on a phone, and implement any functions that are required to get and set |
64 to get and set the attributes. </p> <p>For details, see <xref href="GUID-2D977A02-5928-5441-8AE7-42A722F2A4B8.dita#GUID-2D977A02-5928-5441-8AE7-42A722F2A4B8/GUID-4DA41221-40B9-5BC7-B2C6-7C6EB4522508">User-Side Hardware Abstraction</xref>. </p> </section> |
64 the attributes. </p> <p>For details, see <xref href="GUID-2D977A02-5928-5441-8AE7-42A722F2A4B8.dita#GUID-2D977A02-5928-5441-8AE7-42A722F2A4B8/GUID-4DA41221-40B9-5BC7-B2C6-7C6EB4522508">User-Side |
65 <section id="GUID-BB519F80-9BE3-4816-9C84-FDD5DE67B6D0"><title>Port |
65 Hardware Abstraction</xref>. </p> </section> |
66 the other drivers</title> <p>The remaining drivers can now be ported. |
66 <section id="GUID-BB519F80-9BE3-4816-9C84-FDD5DE67B6D0"><title>Port the other drivers</title> <p>The remaining drivers can |
67 Go and see: </p> <ul> |
67 now be ported. Go and see: </p> <ul> |
68 <li id="GUID-6D6B4F23-9F27-5DBF-A0FB-9E48CCCAA4AF"><p><xref href="GUID-DF2F0439-AE1A-599C-91B9-6EF2177C3C7E.dita">DMA Framework</xref> </p> </li> |
68 <li id="GUID-6D6B4F23-9F27-5DBF-A0FB-9E48CCCAA4AF"><p><xref href="GUID-DF2F0439-AE1A-599C-91B9-6EF2177C3C7E.dita">DMA |
69 <li id="GUID-A0CF718D-29D3-5137-9964-40A5C179674D"><p><xref href="GUID-E081474F-6B17-5D2E-833B-E8177778577A.dita">Digitizer Driver</xref> </p> </li> |
69 Framework</xref> </p> </li> |
70 <li id="GUID-92D3BEC0-2BCD-51D1-9222-8214F9B6889E"><p><xref href="GUID-D048E187-6B1C-5A80-9CD0-89CD10688C6F.dita">Keyboard Driver</xref> </p> </li> |
70 <li id="GUID-A0CF718D-29D3-5137-9964-40A5C179674D"><p><xref href="GUID-E081474F-6B17-5D2E-833B-E8177778577A.dita">Digitizer |
71 <li id="GUID-E9E1CE2D-B8F4-577F-99EB-A9622F302C2A"><p><xref href="GUID-8C22AF20-EE0E-5AD2-BEFD-FED5A7DBB09B.dita">LCD Extension</xref> </p> </li> |
71 Driver</xref> </p> </li> |
|
72 <li id="GUID-92D3BEC0-2BCD-51D1-9222-8214F9B6889E"><p><xref href="GUID-D048E187-6B1C-5A80-9CD0-89CD10688C6F.dita">Keyboard |
|
73 Driver</xref> </p> </li> |
|
74 <li id="GUID-E9E1CE2D-B8F4-577F-99EB-A9622F302C2A"><p><xref href="GUID-8C22AF20-EE0E-5AD2-BEFD-FED5A7DBB09B.dita">LCD |
|
75 Extension</xref> </p> </li> |
|
76 <li id="GUID-A59034CE-8742-5666-9585-0FD1A2DE30E7"><p> <xref href="GUID-5C223AD5-4676-58B4-B3A5-066F6B69AA4D.dita#GUID-5C223AD5-4676-58B4-B3A5-066F6B69AA4D/GUID-868866C8-E90C-5291-8732-BB4E86D6B43E">Local Media Subsystem</xref> </p> </li> |
72 <li id="GUID-A59034CE-8742-5666-9585-0FD1A2DE30E7"><p> <xref href="GUID-5C223AD5-4676-58B4-B3A5-066F6B69AA4D.dita#GUID-5C223AD5-4676-58B4-B3A5-066F6B69AA4D/GUID-868866C8-E90C-5291-8732-BB4E86D6B43E">Local Media Subsystem</xref> </p> </li> |
77 <li id="GUID-93D5D175-5493-55F2-B0C2-E1EEE852474D"><p><xref href="GUID-9540A82E-F83D-55F5-B441-868CF77468E9.dita">Media |
73 <li id="GUID-93D5D175-5493-55F2-B0C2-E1EEE852474D"><p><xref href="GUID-9540A82E-F83D-55F5-B441-868CF77468E9.dita">Media Drivers</xref> </p> </li> |
78 Drivers</xref> </p> </li> |
74 <li id="GUID-85D744D4-81B2-55EC-B746-F3DF263B306D"><p><xref href="GUID-0C435514-EEC6-5660-BB5F-535790349632.dita">Power Management</xref> </p> </li> |
79 <li id="GUID-85D744D4-81B2-55EC-B746-F3DF263B306D"><p><xref href="GUID-0C435514-EEC6-5660-BB5F-535790349632.dita">Power |
|
80 Management</xref> </p> </li> |
|
81 <li id="GUID-9AD5A0B3-83F7-50DC-AB8D-BDE8830235FA"><p> <xref href="GUID-A04F46F8-1BA9-5A77-B455-59C67DD4AA36.dita#GUID-A04F46F8-1BA9-5A77-B455-59C67DD4AA36/GUID-2AC9DD85-20AB-5E41-B21C-A08300989531">Serial Port Driver</xref> </p> </li> |
75 <li id="GUID-9AD5A0B3-83F7-50DC-AB8D-BDE8830235FA"><p> <xref href="GUID-A04F46F8-1BA9-5A77-B455-59C67DD4AA36.dita#GUID-A04F46F8-1BA9-5A77-B455-59C67DD4AA36/GUID-2AC9DD85-20AB-5E41-B21C-A08300989531">Serial Port Driver</xref> </p> </li> |
82 <li id="GUID-B9994028-8D4E-5752-8F84-018346EC617B"><p><xref href="GUID-1499E635-B6E3-51A0-AE38-ADF99FF86CD6.dita">Sound |
76 <li id="GUID-B9994028-8D4E-5752-8F84-018346EC617B"><p><xref href="GUID-1499E635-B6E3-51A0-AE38-ADF99FF86CD6.dita">Sound Driver</xref> </p> </li> |
83 Driver</xref> </p> </li> |
77 <li id="GUID-C69A5E75-E65B-51F7-AE89-22DC80AFB6F9"><xref href="GUID-AD195629-81CE-5E57-A59E-C67AACF7A2C2.dita">USB Client Driver |
84 <li id="GUID-C69A5E75-E65B-51F7-AE89-22DC80AFB6F9"><xref href="GUID-AD195629-81CE-5E57-A59E-C67AACF7A2C2.dita">USB |
78 Technology</xref><p> </p> </li> |
85 Client Driver Technology</xref><p> </p> </li> |
|
86 </ul> </section> |
79 </ul> </section> |
87 </conbody></concept> |
80 </conbody></concept> |