aboutsummaryrefslogtreecommitdiff
path: root/ecosflash/notes.txt
blob: 55f1729783999bd30ba8acce5d711058aae89a02 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
Some of these binaries are build & linked using eCos. 

For source for the flash drivers, see:

http://ecos.sourceware.org/


1. GDB startup script for debugging purposes.

# startup script for debugging flash erase
target remote 10.0.0.56:2001
monitor halt
monitor reset
load
# stack
monitor rm 13 0x7000
# pc 
monitor rm 15 0x8000
# arg1 to erase()
monitor rm 0 0x1030000
# arg2 to erase()
monitor rm 1 0x10000
stepi



2. Uploading flash driver via tftp


$ tftp 10.0.0.108
tftp> binary
tftp> put at91fr40162.bin 10.0.0.108:/config/flashdriver.bin
Sent 4048 bytes in 0.1 seconds
tftp>


4. Programming flash

eCosBoard_prog 0x1000000 /config/testdata.bin
 
 
tftp> put /cygdrive/c/workspace/ecosboard/ecosboard/phi/bootloader/images/bootloader.bin 10.0.0.108:/config/test.bin
Sent 165724 bytes in 3.9 seconds


halt
reg cpsr 0x000000D3
mww 0xFFE00020 0x1
mww 0xFFE00024 0x00000000
mww 0xFFE00000 0x01002539
eCosBoard_profile
eCosBoard_prog /config/test.bin 0x1000000
eCosBoard_profile_done




set remote memory-write-packet-size fixed


set remote memory-write-packet-size 8192
set remote memory-map-packet on
target remote 10.0.0.108:3333
monitor halt
monitor reg cpsr 0x000000D3
monitor mww 0xFFE00020 0x1
monitor mww 0xFFE00024 0x00000000
monitor mww 0xFFE00000 0x01002539


monitor eCosBoard_profile
load
monitor eCosBoard_profile_done


source /tmp/ecosboard/packages/services/profile/gprof/current/host/gprof.gdb
gprof_dump
shell cp gmon.out /tmp/ecosboard/build/src
echo To view: cd /tmp/ecosboard/build/src && gprof openocd


Performance problems:

It seems the problem is that the actual flash programming takes time. 
hal_delay_us() is invoked between each time the 
CPU is polled for whether flash programming has completed.


Flat profile:

Each sample counts as 0.01 seconds.
  %   cumulative   self              self     total
 time   seconds   seconds    calls  Ts/call  Ts/call  name
 35.82     37.66    37.66                             hal_delay_us
 11.90     50.17    12.51                             arm7tdmi_clock_out
  9.86     60.54    10.37                             gdb_get_packet
  5.36     66.17     5.63                             memcpy
  4.34     70.73     4.56                             target_buffer_get_u32
  3.34     74.25     3.51                             embeddedice_read_reg_w_che
ck
  1.39     75.71     1.46                             arm7_9_write_memory
  1.34     77.11     1.40                             cyg_tcp_output
  1.33     78.51     1.40                             __udivsi3
  1.11     79.68     1.17                             cyg_tcp_input
  1.07     80.80     1.13                             arm7tdmi_store_word_regs
  0.95     81.81     1.00                             __udivdi3
  0.95     82.80     1.00                             __umodsi3
  0.93     83.78     0.98                             arm7tdmi_write_core_regs
  0.86     84.68     0.91                             arm7_9_poll
  0.85     85.57     0.89                             memset
  0.77     86.38     0.81                             cyg_splx
  0.64     87.05     0.67                             cyg_in_cksumdata
  0.63     87.71     0.66                             openeth_deliver
  0.57     88.31     0.60                             strstr
  0.51     88.85     0.53                             eth_drv_recv
  0.49     89.36     0.52                             cyg_splinternal
  0.49     89.88     0.52                             cyg_splimp
  0.46     90.36     0.48                             cyg_ip_input