1. The document discusses defining a software "bug" and refines the definition from a dictionary.
2. It defines a bug as "a defect, fault, flaw, or imperfection which causes the software to not operate as intended or to stop operating abruptly."
3. The definition is intended for use in the scope of a software guarantee.
46. Definition of a Software "bug":
Webster's New Collegiate Dictionary defines a "bug" as "an unexpected defect,
fault, flaw, or imperfection". We need to refine this definition since it is too
ambiguous. In the scope of this guarantee, a "bug", with respect to the
guaranteed software, is defined as "a defect, fault, flaw or imperfection which
causes the software to not operate as intended or to stop operating abruptly."
http://www.autocadstandards.org/autocadstandards/bugfree/default.htm
47. Boot-time
Linux - Jollen’s Consulting. www.jollen.org/consulting
48. Linux - Jollen’s Consulting. www.jollen.org/consulting
49. Linux - Jollen’s Consulting. www.jollen.org/consulting
56. linux kernel for
s3c2410
http://www.jk2410.org/opensource/linux-2.6.20.4-jk2410.tar.bz2
http://www.jk2410.org/opensource/gcc-4.1.0-glibc-2.4.tar.bz2
$ make ARCH=arm CROSS_COMPILE=/opt/crosstool/gcc-4.1.0-glibc-2.4/arm-9tdmi-linux-gnueabi/bin/
arm-9tdmi-linux-gnueabi- menuconfig
$ make ARCH=arm CROSS_COMPILE=/opt/crosstool/gcc-4.1.0-glibc-2.4/arm-9tdmi-linux-gnueabi/bin/
arm-9tdmi-linux-gnueabi- uImage
57. $ make uImage
$ cd /usr/local/bin
$ sudo wget http://www.jk2410.org/opensource/pre-built/mkimage
$ chmod a+x mkimage
66. /*
* the actual reset code
*/
reset:
/*
* set the cpu to SVC32 mode
*/
mrs r0,cpsr
bic r0,r0,#0x1f
orr r0,r0,#0xd3
msr cpsr,r0
.
.
.
#ifdef CONFIG_INIT_CRITICAL
bl cpu_init_crit
#endif
Where memsetup be called.
relocate
Linux - Jollen’s Consulting. www.jollen.org/consulting
68. /*
* before relocating, we have to setup RAM timing
* because memory timing is board-dependend, you will
* find a memsetup.S in your board directory.
*/
mov ip, lr
bl memsetup
mov lr, ip
mov pc, lr
Return to reset.
board/lart/memsetup.S
Linux - Jollen’s Consulting. www.jollen.org/consulting
74. typedef int (init_fnc_t) (void);
init_fnc_t *init_sequence[] = {
cpu_init, /* basic cpu dependent setup */
board_init, /* basic board dependent setup */
interrupt_init, /* set up exceptions */
env_init, /* initialize environment */
init_baudrate, /* initialze baudrate settings */
serial_init, /* serial communications setup */
console_init_f, /* stage 1 init of console */
display_banner, /* say that we are here */
dram_init, /* configure available RAM banks */
display_dram_config,
NULL,
};
Linux - Jollen’s Consulting. www.jollen.org/consulting
75. void start_armboot (void)
{
init_fnc_t **init_fnc_ptr;
for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) {
if ((*init_fnc_ptr)() != 0) {
hang ();
}
}
.
.
.
/* main_loop() can return to retry autoboot, if so just run it again. */
for (;;) {
main_loop ();
}
}
Linux - Jollen’s Consulting. www.jollen.org/consulting
76. void start_linux(char *name,char *rdname)
{
void (*theKernel)(int zero, int arch, u32 params);
u32 exec_at = ZIMAGE_LOAD_ADDRESS;
u32 parm_at = DRAM_BASE + 0x100;
u32 machine_type;
load_image(name, exec_at); /* copy image into RAM */
load_image(rdname, INITRD_LOAD_ADDRESS);/* copy initial ramdisk image into RAM */
setup_tags(parm_at); /* sets up parameters */
machine_type = get_mach_type(); /* get machine type */
irq_shutdown(); /* stop irq */
cpu_op(CPUOP_MMUCHANGE, NULL); /* turn MMU off */
theKernel = (void (*)(int, int, u32))exec_at; /* set the kernel address */
theKernel(0, machine_type, parm_at); /* jump to kernel with register set */
/* NOT REACHED */
}
Linux - Jollen’s Consulting. www.jollen.org/consulting
77.
78. User Mode
Application
System Call Interface
Virture File System(VFS)
BSD socket
inet(AF_INET)
Kernel Mode Buffer Cache Network Subsystem
Transport(TCP,UDP)
Network(IP)
Character Block Network
Device Driver Device Driver Device Driver
Device Interface
Physical Device (Hardware)
Hardware
Source: Jollen Linux (Revision 5)
Linux - Jollen’s Consulting. www.jollen.org/consulting
79. Linux - Jollen’s Consulting. www.jollen.org/consulting
80. Linux - Jollen’s Consulting. www.jollen.org/consulting
81. Source: Jollen Linux (Revision 5)
Linux - Jollen’s Consulting. www.jollen.org/consulting
82. Linux - Jollen’s Consulting. www.jollen.org/consulting
83. Linux - Jollen’s Consulting. www.jollen.org/consulting
84. Linux - Jollen’s Consulting. www.jollen.org/consulting
85. Jollen Chen <jollen@jollen.org>
Jollen's Consulting Embedded Linux
Openmoko Openmoko
Openmoko
Android OS
Android Android
- Android
Android porting (s3c244x/s3c64x0) Linux Linux
Jollen - www.jollen.org/blog
www.jollen.org/consulting