|
1 <?xml version="1.0" encoding="utf-8"?> |
|
2 <!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. --> |
|
3 <!-- This component and the accompanying materials are made available under the terms of the License |
|
4 "Eclipse Public License v1.0" which accompanies this distribution, |
|
5 and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". --> |
|
6 <!-- Initial Contributors: |
|
7 Nokia Corporation - initial contribution. |
|
8 Contributors: |
|
9 --> |
|
10 <!DOCTYPE concept |
|
11 PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> |
|
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 to do to create a base port. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody> |
|
14 <p>The easiest way to create a base port is to take the supplied template |
|
15 port and expand it to suit your own hardware configuration(s). The |
|
16 template port, is an outline, but working, framework that you can |
|
17 modify to suit your own hardware. </p> |
|
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> |
|
19 <section id="GUID-F8897488-2A94-461D-AA11-7AC2BDA1D3C5"><title>Set |
|
20 up the environment</title> <p>The first thing to do is to set up your |
|
21 environment for building, downloading onto your hardware, and testing |
|
22 that the port works. </p> </section> |
|
23 <section id="GUID-124A8A3A-D114-4A68-9E9E-7062815A8717"><title>Build, |
|
24 download, and test the supplied template port</title> <p>As supplied, |
|
25 the template port is designed to boot on any hardware. It should boot |
|
26 successfully, but clearly, the system can do nothing more at this |
|
27 time. A successful boot shows that your build environment has been |
|
28 set up correctly. </p> </section> |
|
29 <section id="GUID-89940537-DA6E-4DE6-9133-74771EB15F6F"><title>Copy |
|
30 and rename the Template port</title> <p>When porting the base to a |
|
31 new platform, you will need to code and build the Variant. This provides |
|
32 those hardware dependent services required by the kernel. In nearly |
|
33 all ports, this is split into an ASSP DLL and a Variant DLL. We usually |
|
34 refer to the ASSP layer and the Variant layer. </p> <p>It is desirable |
|
35 that code that depends only on the properties of the ASSP be segregated |
|
36 from code that depends on details of the system outside the ASSP, |
|
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 |
|
38 the <filepath>...\template_variant\...</filepath> directory contains |
|
39 the code specific to the template board. </p> </section> |
|
40 <section id="GUID-B43B51BC-9ED4-4737-B738-182DBAF04C25"><title>Code |
|
41 the Bootstrap</title> <p>The bootstrap consists of several generic |
|
42 source and header files supplied as part of Symbian platform, and |
|
43 a set of platform specific files. You need to create these platform |
|
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> |
|
45 <section id="GUID-699C7EE9-A65A-5431-B23D-C5BD80494C09"><title>Implement |
|
46 the interrupt dispatcher</title> <p>An interrupt is a condition that |
|
47 causes the CPU to suspend normal execution, enter interrupt handling |
|
48 state and jump to a section of code called an interrupt handler. The |
|
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 |
|
52 be built, downloaded and tested. </p> </section> |
|
53 <section id="GUID-57F05EBC-310B-5288-B35E-CAA27E933590"><title>Implement |
|
54 the Asic class</title> <p>The Kernel requires that the ASSP/Variant |
|
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 |
|
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 |
|
57 built, downloaded and tested. </p> </section> |
|
58 <section id="GUID-88B8F550-4E17-48FE-8A5A-1961E7F0642F"><title>Port |
|
59 the User-Side Hardware Abstraction (HAL)</title> <p>The User-Side |
|
60 Hardware Abstraction (HAL) component provides a simple interface for |
|
61 programs to read and set hardware-specific settings, for example, |
|
62 the display contrast. A base port must define the attributes that |
|
63 clients can use on a phone, and implement any functions that are required |
|
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> |
|
65 <section id="GUID-BB519F80-9BE3-4816-9C84-FDD5DE67B6D0"><title>Port |
|
66 the other drivers</title> <p>The remaining drivers can now be ported. |
|
67 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> |
|
69 <li id="GUID-A0CF718D-29D3-5137-9964-40A5C179674D"><p><xref href="GUID-E081474F-6B17-5D2E-833B-E8177778577A.dita">Digitizer Driver</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> |
|
71 <li id="GUID-E9E1CE2D-B8F4-577F-99EB-A9622F302C2A"><p><xref href="GUID-8C22AF20-EE0E-5AD2-BEFD-FED5A7DBB09B.dita">LCD Extension</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> |
|
73 <li id="GUID-85D744D4-81B2-55EC-B746-F3DF263B306D"><p><xref href="GUID-F5430A12-D89D-4936-B846-E917B434F755.dita">Power Management</xref> </p> </li> |
|
74 <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-B9994028-8D4E-5752-8F84-018346EC617B"><p><xref href="GUID-669C77A3-89BA-5321-ABB1-4356A5FE478C.dita">Sound Driver</xref> </p> </li> |
|
76 <li id="GUID-C69A5E75-E65B-51F7-AE89-22DC80AFB6F9"><xref href="GUID-C06CFF3E-23E9-5E0B-99A1-51B8ED95465F.dita">USB Client Driver |
|
77 Technology</xref><p> </p> </li> |
|
78 </ul> </section> |
|
79 </conbody></concept> |