URL
https://opencores.org/ocsvn/or1k/or1k/trunk
Subversion Repositories or1k
Compare Revisions
- This comparison shows the changes necessary to convert path
/
- from Rev 851 to Rev 852
- ↔ Reverse comparison
Rev 851 → Rev 852
/trunk/uclinux/uClinux-2.0.x/README.or32
1,30 → 1,155
This is uClinux for or32. |
|
To build type: |
set to 1 MC_INIT define in include/asm-or1k/board.h if you are using memory controller |
# To build toochain follow these steps |
|
mkdir /tmp/tools |
cd /tmp/tools |
mkdir or32-uclinux |
export PATH=/tmp/tools/or32-uclinux/bin:$PATH |
|
# |
# Binutils: |
# |
|
cvs -z9 co or1k/binutils |
cd or1k |
mkdir binutils-ucl |
cd binutils-ucl |
../binutils/configure --target=or32-uclinux --prefix=/tmp/tools/or32-uclinux |
make all install |
cd ../../ |
|
# |
# Gcc |
# |
|
cvs -z9 co or1k/gcc-3.1 |
cd or1k |
mkdir gcc-ucl |
cd gcc-ucl |
../gcc-3.1/configure --target=or32-uclinux --prefix=/tmp/tools/or32-uclinux/ --local-prefix=/tmp/tools/or32-uclinux/or32-uclinux/ --with-gnu-as --with-gnu-ld --verbose --enable-languages=c |
make all install |
cd ../../ |
|
# |
# uClibc |
# |
|
cvs -z9 co or1k/uclibc |
cd or1k/uclibc |
ls -s ./extra/Configs/Config.cross.or32.uclinux Config |
# Edit Config file: |
# TARGET_ARCH=or32 |
# CROSS = $(TARGET_ARCH)-uclinux- |
# KERNEL_SOURCE=/tmp/tools/or1k/uclinux/uClinux-2.0.x/ |
# DEVEL_PREFIX = /tmp/tools/$(TARGET_ARCH)-uclinux |
make all install |
cd ../../or32-uclinux/bin |
rm -f addr2line ar as cc cpp gasp gcc ld nm objcopy objdump ranlib size strings strip jar grepjar |
cd ../../ |
|
# |
# Rebuild Gcc |
# |
cd or1k/gcc-ucl |
../gcc-3.1/configure --target=or32-uclinux --prefix=/tmp/tools/or32-uclinux/ --local-prefix=/tmp/tools/or32-uclinux/or32-uclinux/ --with-gnu-as --with-gnu-ld --verbose --enable-languages=c,c++ |
make all install |
cd ../../ |
|
# |
# Applications |
# |
cvs -z9 co or1k/uclinux/userland/sash |
cvs -z9 co or1k/uclinux/userland/init |
cvs -z9 co or1k/uclinux/userland/route |
cvs -z9 co or1k/uclinux/userland/ping |
cd or1k/uclinux/userland/sash |
make |
cd ../init |
make |
cd ../route |
make |
cd ../ping |
make |
cd ../../../../ |
|
# |
# Generating romfs ramdisk image |
# |
mkdir romfs |
mkdir romfs/bin |
cp or1k/uclinux/userland/init/init romfs/bin/ |
cp or1k/uclinux/userland/sash/sh romfs/bin/ |
cp or1k/uclinux/userland/route/ifconfig romfs/bin/ |
cp or1k/uclinux/userland/route/route romfs/bin/ |
cp or1k/uclinux/userland/ping/ping romfs/bin/ |
chmod 777 romfs/bin/* |
mkdir romfs/etc |
cp or1k/uclinux/userland/init/rc romfs/etc/ |
mkdir romfs/dev |
cd romfs/dev |
mknod ram0 1 0 |
mknod tty 4 0 |
mknod tty1 4 1 |
mknod ttyS0 4 64 |
cd .. |
genromfs -f ../or1k/uclinux/uClinux-2.0.x/arch/or32/board/initrd |
cd .. |
|
# |
# Generating ext2 ramdisk image |
# |
mkdir ext2fs |
mke2fs -m0 -r0 -O none /dev/ram0 512 |
mount /dve/ram0/ ext2fs |
mkdir ext2fs/bin |
cp or1k/uclinux/userland/init/init ext2fs/bin/ |
cp or1k/uclinux/userland/sash/sh ext2fs/bin/ |
cp or1k/uclinux/userland/route/ifconfig ext2fs/bin/ |
cp or1k/uclinux/userland/route/route ext2fs/bin/ |
cp or1k/uclinux/userland/ping/ping ext2fs/bin/ |
chmod 777 ext2fs/bin/* |
mkdir ext2fs/etc |
cp or1k/uclinux/userland/init/rc ext2fs/etc/ |
mkdir ext2fs/dev |
cd ext2fs/dev |
mknod ram0 1 0 |
mknod tty 4 0 |
mknod tty1 4 1 |
mknod ttyS0 4 64 |
cd ../../ |
umount ext2fs |
dd if=/dev/ram0 of=or1k/uclinux/uClinux-2.0.x/arch/or32/board/initrd |
|
# |
# Building uClinux |
# |
|
cvs -z9 co or1k/uclinux/uClinux-2.0.x/ |
cd or1k/uclinux/uClinux-2.0.x/ |
# Edit arch/or32/Roules.mk file: |
# LIBGCC = /tmp/tools/or32-uclinux/lib/gcc-lib/or32-uclinux/3.1/libgcc.a |
cd or1k/uclinux/uClinux-2.0.x/ |
make oldconfig |
make dep |
make linux.bin |
make |
cd ../../../ |
|
To make ext2 fs image: |
# |
# Build or32 simulator |
# |
|
mke2fs -m0 -r0 -O none /dev/ram0 64 |
mount /dve/ram0/ /initrd |
cp ... /initrd |
mknod fb c 29 0 |
mknod fb0 c 29 0 |
mknod ram0 b 1 0 |
mknod tty c 4 0 |
mknod tty0 c 4 0 |
mknod tty1 c 4 1 |
mknod ttyS0 c 4 64 |
mknod ttyS1 c 4 65 |
umount /initrd |
dd if=/dev/ram0 of=~/uClinux/linux/arch/or1k/board/initrd |
cvs -z9 co or1k/or1ksim |
cd or1k/or1ksim |
configure --target=or32-uclinux --prefix=/tmp/tools/or32-uclinux/ |
make all install |
cd ../../ |
|
To make romfs image: |
|
cd ~/delete/romfs |
cp .... ./ |
genromfs -f ~/uClinux/linux/arch/or1k/board/initrd |
# |
# Run uClinux on simulator |
# |
cd or1k/uclinux/uClinux-2.0.x/ |
# Open another two terminals in this folder. Type "less uart0.tx" with "F" option |
# to monitor outoput from uart in first terminal and "cat > uart0.rx" to send |
# chars to uart in the second. |
or32-uclinux-sim -f sim.cfg linux |
/trunk/uclinux/uClinux-2.0.x/include/asm-or32/string.h
5,7 → 5,7
#include <asm/page.h> |
|
#define __HAVE_ARCH_MEMSET |
extern inline void * memset(void * s,int c,size_t count) |
extern inline void * memset(void * s,int c,__kernel_size_t count) |
{ |
char *xs = (char *) s; |
|
/trunk/uclinux/uClinux-2.0.x/sim.cfg
300,7 → 300,7
/* iprompt = 0 */ |
exe_log = 0 |
exe_log_type = software |
exe_log_start = 39000000 |
exe_log_start = 27000000 |
/* exe_log_end = 20000000*/ |
exe_log_marker = 100 |
exe_log_fn = "executed.log" |
575,7 → 575,7
section fb |
enabled = 1 |
baseaddr = 0xc0000000 |
refresh_rate = 1000000 |
refresh_rate = 10000000 |
filename = "primary" |
end |
|
/trunk/uclinux/uClinux-2.0.x/init/main.c
280,14 → 280,13
|
extern void dquot_init(void); |
|
//static char * argv_init[MAX_INIT_ARGS+2] = { "ping", "10.1.1.2", NULL, }; |
static char * argv_init[MAX_INIT_ARGS+2] = { NULL, }; |
static char * argv_init[MAX_INIT_ARGS+2] = { "init", NULL, }; |
static char * envp_init[MAX_INIT_ENVS+2] = { "HOME=/", "TERM=linux", NULL, }; |
|
static char * argv_rc[] = { "/bin/sh", NULL }; |
static char * envp_rc[] = { "HOME=/", "TERM=linux", NULL }; |
|
static char * argv[] = { "-/bin/sh",NULL }; |
static char * argv[] = { "-/bin/sh", NULL }; |
static char * envp[] = { "HOME=/usr/root", "TERM=linux", NULL }; |
|
char *get_options(char *str, int *ints) |
1204,19 → 1203,6
(void) dup(0); |
(void) dup(0); |
|
#if 0 |
printf("Executing ping... "); |
execve("/bin/ping",argv_init,envp_init); |
printf("failed\n"); |
|
printf("Executing nano-X... "); |
execve("/bin/landmine",argv_init,envp_init); |
printf("failed\n"); |
#endif |
printf("Executing sash... "); |
execve("/bin/sash",argv_init,envp_init); |
printf("failed\n"); |
|
if (!execute_command) { |
execve("/etc/init",argv_init,envp_init); |
execve("/bin/init",argv_init,envp_init); |
/trunk/uclinux/uClinux-2.0.x/fs/binfmt_elf.c
186,27 → 186,39
is refering to */ |
rel_loc = (void *)(rel_ptr->r_offset + sec[dst_indx].pm_add); |
if((rel_ptr->r_info & 0x000000ff) == R_OR32_32) { |
_print("R_OR32_32: rel_loc %.8lx vm_add = %.8lx pm_add = %.8lx val = %.8lx\n", rel_loc, sec[src_indx].vm_add, sec[src_indx].pm_add, sym_tab->st_value); |
*(unsigned long *)rel_loc = *(unsigned long *)rel_loc |
- sec[src_indx].vm_add |
+ sec[src_indx].pm_add; |
+ sec[src_indx].pm_add |
+ sym_tab->st_value; |
} |
else if((rel_ptr->r_info & 0x000000ff) == R_OR32_16) { |
_print("R_OR32_16: rel_loc %.8lx vm_add = %.8lx pm_add = %.8lx\n", rel_loc, sec[src_indx].vm_add, sec[src_indx].pm_add); |
*(unsigned short *)rel_loc = *(unsigned short *)rel_loc |
- sec[src_indx].vm_add |
+ sec[src_indx].pm_add; |
+ sec[src_indx].pm_add |
+ sym_tab->st_value; |
} |
else if((rel_ptr->r_info & 0x000000ff) == R_OR32_8) { |
_print("R_OR32_8: rel_loc %.8lx vm_add = %.8lx pm_add = %.8lx\n", rel_loc, sec[src_indx].vm_add, sec[src_indx].pm_add); |
*(unsigned char *)rel_loc = *(unsigned char *)rel_loc |
- sec[src_indx].vm_add |
+ sec[src_indx].pm_add; |
+ sec[src_indx].pm_add |
+ sym_tab->st_value; |
} |
else if((rel_ptr->r_info & 0x000000ff) == R_OR32_CONSTH) { |
_print("R_OR32_CONSTH: rel_loc %.8lx *rel_loc %.8lx\n", rel_loc, *(((unsigned short *)rel_loc) + 1)); |
_print(" vm_add %.8lx pm_add %.8lx\n", sec[src_indx].vm_add, sec[src_indx].pm_add); |
or32_consth_add = (((unsigned short *)rel_loc) + 1); |
or32_consth_rel = *or32_consth_add << 16; |
} |
else if((rel_ptr->r_info & 0x000000ff) == R_OR32_CONST) { |
_print("R_OR32_CONST: rel_loc %.8lx *rel_loc %.8lx\n", rel_loc, *(((unsigned short *)rel_loc) + 1)); |
_print(" vm_add %.8lx pm_add %.8lx\n", sec[src_indx].vm_add, sec[src_indx].pm_add); |
_print(" consth %.8lx st_value %.8lx\n", or32_consth_rel, sym_tab->st_value); |
|
tmp = or32_consth_rel | *(((unsigned short *)rel_loc) + 1); |
tmp = tmp /*+ sym_tab->st_value */ - sec[src_indx].vm_add + |
tmp = tmp + sym_tab->st_value - sec[src_indx].vm_add + |
sec[src_indx].pm_add; |
*(((unsigned short *)rel_loc) + 1) = tmp & 0x0000ffff; |
if(or32_consth_add != (unsigned short *)NULL) { |
216,6 → 228,8
} |
} |
else if((rel_ptr->r_info & 0x000000ff) == R_OR32_JUMPTARG) { |
_print("R_OR32_JUMPTARG: rel_loc %.8lx vm_add = %.8lx pm_add = %.8lx\n", rel_loc, sec[src_indx].vm_add, sec[src_indx].pm_add); |
_print(" pm_add %.8lx\n", sec[dst_indx].pm_add); |
tmp = ((*(unsigned long *)rel_loc) & 0x03ffffff); |
tmp = (tmp & 0x02000000) ? (tmp | 0xfc000000) : tmp; |
tmp = tmp + ((sym_tab->st_value - |
/trunk/uclinux/uClinux-2.0.x/arch/or32/tools/bintoc.c
17,7 → 17,7
fprintf(stdout, "# WARNING - this file is automatically generated!\n"); |
fprintf(stdout, "#\n"); |
fprintf(stdout, "\n"); |
fprintf(stdout, "\t.section .initrd\n"); |
fprintf(stdout, "\t.section .initrd, \"a\"\n"); |
pos = 0; |
while ((len = read(0, buf, sizeof(buf))) > 0) |
{ |
/trunk/uclinux/uClinux-2.0.x/arch/or32/tools/bintoc
1,21 → 1,21
- ě đ $ ( , 0 4 8 < @
- D UĺSPč [Ă6 0
Ŕt˙Đv čS č~ ]üÉĂ ˙5˙% ˙%$h éŕ˙˙˙˙%(h éĐ˙˙˙˙%,h éŔ˙˙˙˙%0h é°˙˙˙˙%4h é ˙˙˙˙%8h( é˙˙˙˙%<h0 é˙˙˙˙%@h8 ép˙˙˙˙%Dh@ é`˙˙˙ 1í^áäřPTRhŔhŘQVh
č˙˙˙ôU ĺě
ŇuIü
Ŕtt&