Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OS
U-Boot.Mirror
提交
25d6712a
U
U-Boot.Mirror
项目概览
OS
/
U-Boot.Mirror
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
U-Boot.Mirror
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
25d6712a
编写于
12月 10, 2004
作者:
W
wdenk
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
* Clean up CMC PU2 flash driver
* Update MAINTAINERS file * Fix bug in MPC823 LCD driver
上级
ed54e621
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
97 addition
and
62 deletion
+97
-62
CHANGELOG
CHANGELOG
+6
-0
MAINTAINERS
MAINTAINERS
+7
-0
Makefile
Makefile
+3
-3
README
README
+3
-3
board/cmc_pu2/flash.c
board/cmc_pu2/flash.c
+65
-53
common/lcd.c
common/lcd.c
+9
-2
doc/README.NetConsole
doc/README.NetConsole
+4
-1
未找到文件。
CHANGELOG
浏览文件 @
25d6712a
...
...
@@ -2,6 +2,12 @@
Changes since U-Boot 1.1.1:
======================================================================
* Clean up CMC PU2 flash driver
* Update MAINTAINERS file
* Fix bug in MPC823 LCD driver
* Fix udelay() on AT91RM9200 for delays < 1 ms.
* Enable long help on CMC PU2 board;
...
...
MAINTAINERS
浏览文件 @
25d6712a
...
...
@@ -209,6 +209,13 @@ Frank Panno <fpanno@delphintech.com>
ep8260 MPC8260
Peter Pearse <peter.pearse@arm.com>
Integrator/AP CM 926EJ-S, CM7x0T, CM9x0T
Integrator/CP CM 926EJ-S CM920T, CM940T, CM922T-XA10
Versatile/AB ARM926EJ-S
Versatile/PB ARM926EJ-S
Denis Peter <d.peter@mpl.ch>
MIP405 PPC4xx
...
...
Makefile
浏览文件 @
25d6712a
...
...
@@ -1197,12 +1197,12 @@ xtract_omap1610xxx = $(subst _cs0boot,,$(subst _cs3boot,,$(subst _cs_autoboot,,$
xtract_omap730p2
=
$(
subst
_cs0boot,,
$(
subst
_cs3boot,,
$(
subst
_config,,
$1
)))
integratorcp_config
:
unconfig
@
./mkconfig
$
(
@:_config
=)
arm arm926ejs integratorcp
integratorap_config
:
unconfig
@
./mkconfig
$
(
@:_config
=)
arm arm926ejs integratorap
integratorcp_config
:
unconfig
@
./mkconfig
$
(
@:_config
=)
arm arm926ejs integratorcp
lpd7a400_config
\
lpd7a404_config
:
unconfig
@
./mkconfig
$
(
@:_config
=)
arm lh7a40x lpd7a40x
...
...
README
浏览文件 @
25d6712a
...
...
@@ -1977,9 +1977,9 @@ Low Level (hardware related) configuration options:
source code. It is used to make hardware dependant
initializations.
- CFG_IMMR: Physical address of the Internal Memory
Mapped
Register; DO NOT CHANGE! (11-4)
[MPC8
xx systems only]
- CFG_IMMR: Physical address of the Internal Memory
.
DO NOT CHANGE unless you know exactly what you're
doing! (11-4) [MPC8xx/82
xx systems only]
- CFG_INIT_RAM_ADDR:
...
...
board/cmc_pu2/flash.c
浏览文件 @
25d6712a
...
...
@@ -37,11 +37,11 @@ flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips */
typedef
unsigned
short
FLASH_PORT_WIDTH
;
typedef
volatile
unsigned
short
FLASH_PORT_WIDTHV
;
#define FPW
FLASH_PORT_WIDTH
#define FPWV
FLASH_PORT_WIDTHV
#define FPW
FLASH_PORT_WIDTH
#define FPWV
FLASH_PORT_WIDTHV
#define FLASH_CYCLE1 0x0555
#define FLASH_CYCLE2 0x02
aa
#define FLASH_CYCLE2 0x02
AA
/*-----------------------------------------------------------------------
* Functions
...
...
@@ -96,9 +96,9 @@ static void flash_reset(flash_info_t *info)
/* Put FLASH back in read mode */
if
((
info
->
flash_id
&
FLASH_VENDMASK
)
==
FLASH_MAN_INTEL
)
*
base
=
(
FPW
)
0x00FF
00FF
;
/* Intel Read Mode */
*
base
=
(
FPW
)
0x00FF
;
/* Intel Read Mode */
else
if
((
info
->
flash_id
&
FLASH_VENDMASK
)
==
FLASH_MAN_AMD
)
*
base
=
(
FPW
)
0x00F0
00F0
;
/* AMD Read Mode */
*
base
=
(
FPW
)
0x00F0
;
/* AMD Read Mode */
}
/*-----------------------------------------------------------------------
...
...
@@ -183,9 +183,9 @@ ulong flash_get_size (FPWV *addr, flash_info_t *info)
/* Write auto select command: read Manufacturer ID */
/* Write auto select command sequence and test FLASH answer */
addr
[
FLASH_CYCLE1
]
=
(
FPW
)
0x00AA
00AA
;
/* for AMD, Intel ignores this */
addr
[
FLASH_CYCLE2
]
=
(
FPW
)
0x0055
0055
;
/* for AMD, Intel ignores this */
addr
[
FLASH_CYCLE1
]
=
(
FPW
)
0x0090
0090
;
/* selects Intel or AMD */
addr
[
FLASH_CYCLE1
]
=
(
FPW
)
0x00AA
;
/* for AMD, Intel ignores this */
addr
[
FLASH_CYCLE2
]
=
(
FPW
)
0x0055
;
/* for AMD, Intel ignores this */
addr
[
FLASH_CYCLE1
]
=
(
FPW
)
0x0090
;
/* selects Intel or AMD */
/* The manufacturer codes are only 1 byte, so just use 1 byte.
* This works for any bus width and any FLASH device width.
...
...
@@ -262,7 +262,7 @@ ulong flash_get_size (FPWV *addr, flash_info_t *info)
int
flash_erase
(
flash_info_t
*
info
,
int
s_first
,
int
s_last
)
{
FPWV
*
addr
=
(
FPWV
*
)(
info
->
start
[
0
]);
int
flag
,
prot
,
sect
,
l_sect
;
int
flag
,
prot
,
sect
,
ssect
,
l_sect
;
ulong
start
,
now
,
last
;
printf
(
"flash_erase: first: %d last: %d
\n
"
,
s_first
,
s_last
);
...
...
@@ -297,58 +297,70 @@ int flash_erase (flash_info_t *info, int s_first, int s_last)
printf
(
"
\n
"
);
}
l_sect
=
-
1
;
/* Disable interrupts which might cause a timeout here */
flag
=
disable_interrupts
();
addr
[
0x0555
]
=
0x00AA
;
addr
[
0x02AA
]
=
0x0055
;
addr
[
0x0555
]
=
0x0080
;
addr
[
0x0555
]
=
0x00AA
;
addr
[
0x02AA
]
=
0x0055
;
/* Start erase on unprotected sectors */
for
(
sect
=
s_first
;
sect
<=
s_last
;
sect
++
)
{
if
(
info
->
protect
[
sect
]
==
0
)
{
/* not protected */
addr
=
(
FPWV
*
)(
info
->
start
[
sect
]);
addr
[
0
]
=
0x0030
;
l_sect
=
sect
;
/*
* Start erase on unprotected sectors.
* Since the flash can erase multiple sectors with one command
* we take advantage of that by doing the erase in chunks of
* 3 sectors.
*/
for
(
sect
=
s_first
;
sect
<=
s_last
;
)
{
l_sect
=
-
1
;
addr
[
FLASH_CYCLE1
]
=
0x00AA
;
addr
[
FLASH_CYCLE2
]
=
0x0055
;
addr
[
FLASH_CYCLE1
]
=
0x0080
;
addr
[
FLASH_CYCLE1
]
=
0x00AA
;
addr
[
FLASH_CYCLE2
]
=
0x0055
;
/* do the erase in chunks of at most 3 sectors */
for
(
ssect
=
0
;
ssect
<
3
;
ssect
++
)
{
if
((
sect
+
ssect
)
>
s_last
)
break
;
if
(
info
->
protect
[
sect
+
ssect
]
==
0
)
{
/* not protected */
addr
=
(
FPWV
*
)(
info
->
start
[
sect
+
ssect
]);
addr
[
0
]
=
0x0030
;
l_sect
=
sect
+
ssect
;
}
}
/* wait at least 80us - let's wait 1 ms */
udelay
(
1000
);
/*
* We wait for the last triggered sector
*/
if
(
l_sect
<
0
)
goto
DONE
;
start
=
get_timer
(
0
);
last
=
start
;
addr
=
(
FPWV
*
)(
info
->
start
[
l_sect
]);
while
((
addr
[
0
]
&
0x0080
)
!=
0x0080
)
{
if
((
now
=
get_timer
(
start
))
>
CFG_FLASH_ERASE_TOUT
)
{
printf
(
"Timeout
\n
"
);
return
1
;
}
/* show that we're waiting */
if
((
now
-
last
)
>
1000
)
{
/* every second */
putc
(
'.'
);
last
=
now
;
}
}
addr
=
(
FPWV
*
)
info
->
start
[
0
];
addr
[
0
]
=
0x00F0
;
/* reset bank */
sect
+=
ssect
;
}
/* re-enable interrupts if necessary */
if
(
flag
)
enable_interrupts
();
/* wait at least 80us - let's wait 1 ms */
udelay
(
1000
);
/*
* We wait for the last triggered sector
*/
if
(
l_sect
<
0
)
goto
DONE
;
start
=
get_timer
(
0
);
last
=
start
;
addr
=
(
FPWV
*
)(
info
->
start
[
l_sect
]);
while
((
addr
[
0
]
&
0x00000080
)
!=
0x00000080
)
{
if
((
now
=
get_timer
(
start
))
>
CFG_FLASH_ERASE_TOUT
)
{
printf
(
"Timeout
\n
"
);
return
1
;
}
/* show that we're waiting */
if
((
now
-
last
)
>
1000
)
{
/* every second */
putc
(
'.'
);
last
=
now
;
}
}
DONE:
/* reset to read mode */
addr
=
(
FPWV
*
)
info
->
start
[
0
];
addr
[
0
]
=
0x00
0000
F0
;
/* reset bank */
addr
[
0
]
=
0x00F0
;
/* reset bank */
printf
(
" done
\n
"
);
return
0
;
...
...
@@ -432,9 +444,9 @@ static int write_word_amd (flash_info_t *info, FPWV *dest, FPW data)
/* Disable interrupts which might cause a timeout here */
flag
=
disable_interrupts
();
base
[
FLASH_CYCLE1
]
=
(
FPW
)
0x00AA
00AA
;
/* unlock */
base
[
FLASH_CYCLE2
]
=
(
FPW
)
0x0055
0055
;
/* unlock */
base
[
FLASH_CYCLE1
]
=
(
FPW
)
0x00A0
00A0
;
/* selects program mode */
base
[
FLASH_CYCLE1
]
=
(
FPW
)
0x00AA
;
/* unlock */
base
[
FLASH_CYCLE2
]
=
(
FPW
)
0x0055
;
/* unlock */
base
[
FLASH_CYCLE1
]
=
(
FPW
)
0x00A0
;
/* selects program mode */
*
dest
=
data
;
/* start programming the data */
...
...
@@ -445,9 +457,9 @@ static int write_word_amd (flash_info_t *info, FPWV *dest, FPW data)
start
=
get_timer
(
0
);
/* data polling for D7 */
while
((
*
dest
&
(
FPW
)
0x00
000080
)
!=
(
data
&
(
FPW
)
0x0000
0080
))
{
while
((
*
dest
&
(
FPW
)
0x00
80
)
!=
(
data
&
(
FPW
)
0x
0080
))
{
if
(
get_timer
(
start
)
>
CFG_FLASH_WRITE_TOUT
)
{
*
dest
=
(
FPW
)
0x00
0000
F0
;
/* reset bank */
*
dest
=
(
FPW
)
0x00F0
;
/* reset bank */
return
(
1
);
}
}
...
...
common/lcd.c
浏览文件 @
25d6712a
...
...
@@ -620,6 +620,8 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y)
cmap
=
(
ushort
*
)
fbi
->
palette
;
#elif defined(CONFIG_MPC823)
cmap
=
(
ushort
*
)
&
(
cp
->
lcd_cmap
[
255
*
sizeof
(
ushort
)]);
#else
# error "Don't know location of color map"
#endif
/* Set color map */
...
...
@@ -631,9 +633,14 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y)
(
(
cte
.
blue
)
&
0x001f
)
;
#ifdef CFG_INVERT_COLORS
*
cmap
++
=
0xffff
-
colreg
;
*
cmap
=
0xffff
-
colreg
;
#else
*
cmap
++
=
colreg
;
*
cmap
=
colreg
;
#endif
#if defined(CONFIG_PXA250)
cmap
++
;
#elif defined(CONFIG_MPC823)
cmap
--
;
#endif
}
}
...
...
doc/README.NetConsole
浏览文件 @
25d6712a
...
...
@@ -25,7 +25,7 @@ nc -u ${TARGET_IP} 6666
stty icanon echo intr ^C
+++++++++++++++++++++++++++++++++++++++++++
It turn
ed out that 'netcat' couldn'
t be used to listen to broadcast
It turn
s out that 'netcat' canno
t be used to listen to broadcast
packets. We developed our own tool 'ncb' (see tools directory) that
listens to broadcast packets on a given port and dumps them to the
standard output. use it as follows:
...
...
@@ -87,3 +87,6 @@ To browse the Linux network console output, use the 'netcat' tool invoked
as follows:
nc -u -l -p 6666
Note that unlike the U-Boot implementation the Linux netconsole is
unidirectional, i. e. you have console output only in Linux.
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录