mirror of
https://github.com/ivoszbg/uniLoader.git
synced 2024-11-10 06:00:07 +00:00
.: Initiate the project
Signed-off-by: Ivaylo Ivanov <ivo.ivanov.ivanov1@gmail.com>
This commit is contained in:
commit
6b4830e362
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
uniLoader
|
||||||
|
*.o
|
||||||
|
asm/*.o
|
||||||
|
asm/linker.lds
|
||||||
|
board/*/*.o
|
||||||
|
soc/*/*.o
|
325
LICENSE
Normal file
325
LICENSE
Normal file
@ -0,0 +1,325 @@
|
|||||||
|
The GNU General Public License (GPL-2.0)
|
||||||
|
Version 2, June 1991
|
||||||
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||||
|
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The licenses for most software are designed to take away your freedom to share
|
||||||
|
and change it. By contrast, the GNU General Public License is intended to
|
||||||
|
guarantee your freedom to share and change free software--to make sure the
|
||||||
|
software is free for all its users. This General Public License applies to
|
||||||
|
most of the Free Software Foundation's software and to any other program whose
|
||||||
|
authors commit to using it. (Some other Free Software Foundation software is
|
||||||
|
covered by the GNU Library General Public License instead.) You can apply
|
||||||
|
it to your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not price.
|
||||||
|
Our General Public Licenses are designed to make sure that you have the
|
||||||
|
freedom to distribute copies of free software (and charge for this service
|
||||||
|
if you wish), that you receive source code or can get it if you want it,
|
||||||
|
that you can change the software or use pieces of it in new free programs;
|
||||||
|
and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to make restrictions that forbid anyone to
|
||||||
|
deny you these rights or to ask you to surrender the rights. These restrictions
|
||||||
|
translate to certain responsibilities for you if you distribute copies of the
|
||||||
|
software, or if you modify it.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether gratis or
|
||||||
|
for a fee, you must give the recipients all the rights that you have.
|
||||||
|
You must make sure that they, too, receive or can get the source code.
|
||||||
|
And you must show them these terms so they know their rights.
|
||||||
|
|
||||||
|
We protect your rights with two steps: (1) copyright the software, and
|
||||||
|
(2) offer you this license which gives you legal permission to copy,
|
||||||
|
distribute and/or modify the software.
|
||||||
|
|
||||||
|
Also, for each author's protection and ours, we want to make certain that
|
||||||
|
everyone understands that there is no warranty for this free software.
|
||||||
|
If the software is modified by someone else and passed on, we want its
|
||||||
|
recipients to know that what they have is not the original, so that any
|
||||||
|
problems introduced by others will not reflect on the
|
||||||
|
original authors' reputations.
|
||||||
|
|
||||||
|
Finally, any free program is threatened constantly by software patents.
|
||||||
|
We wish to avoid the danger that redistributors of a free program will
|
||||||
|
individually obtain patent licenses, in effect making the program proprietary.
|
||||||
|
To prevent this, we have made it clear that any patent must be licensed for
|
||||||
|
everyone's free use or not licensed at all.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution
|
||||||
|
and modification follow.
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
0. This License applies to any program or other work which contains a notice
|
||||||
|
placed by the copyright holder saying it may be distributed under the terms
|
||||||
|
of this General Public License. The "Program", below, refers to any such
|
||||||
|
program or work, and a "work based on the Program" means either the Program
|
||||||
|
or any derivative work under copyright law: that is to say, a work containing
|
||||||
|
the Program or a portion of it, either verbatim or with modifications and/or
|
||||||
|
translated into another language. (Hereinafter, translation is included
|
||||||
|
without limitation in the term "modification".)
|
||||||
|
Each licensee is addressed as "you".
|
||||||
|
|
||||||
|
Activities other than copying, distribution and modification are not covered
|
||||||
|
by this License; they are outside its scope. The act of running the Program
|
||||||
|
is not restricted, and the output from the Program is covered only if its
|
||||||
|
contents constitute a work based on the Program (independent of having been
|
||||||
|
made by running the Program). Whether that is true depends on
|
||||||
|
what the Program does.
|
||||||
|
|
||||||
|
1. You may copy and distribute verbatim copies of the Program's source code
|
||||||
|
as you receive it, in any medium, provided that you conspicuously and
|
||||||
|
appropriately publish on each copy an appropriate copyright notice and
|
||||||
|
disclaimer of warranty; keep intact all the notices that refer to this
|
||||||
|
License and to the absence of any warranty; and give any other recipients
|
||||||
|
of the Program a copy of this License along with the Program.
|
||||||
|
|
||||||
|
You may charge a fee for the physical act of transferring a copy, and you
|
||||||
|
may at your option offer warranty protection in exchange for a fee.
|
||||||
|
|
||||||
|
2. You may modify your copy or copies of the Program or any portion of it,
|
||||||
|
thus forming a work based on the Program, and copy and distribute such
|
||||||
|
modifications or work under the terms of Section 1 above, provided that you
|
||||||
|
also meet all of these conditions:
|
||||||
|
|
||||||
|
a) You must cause the modified files to carry prominent notices stating
|
||||||
|
that you changed the files and the date of any change.
|
||||||
|
|
||||||
|
b) You must cause any work that you distribute or publish, that in whole
|
||||||
|
or in part contains or is derived from the Program or any part thereof,
|
||||||
|
to be licensed as a whole at no charge to all third parties under
|
||||||
|
the terms of this License.
|
||||||
|
|
||||||
|
c) If the modified program normally reads commands interactively when run,
|
||||||
|
you must cause it, when started running for such interactive use in the
|
||||||
|
most ordinary way, to print or display an announcement including an
|
||||||
|
appropriate copyright notice and a notice that there is no warranty
|
||||||
|
(or else, saying that you provide a warranty) and that users may
|
||||||
|
redistribute the program under these conditions, and telling the user how
|
||||||
|
to view a copy of this License. (Exception: if the Program itself is
|
||||||
|
interactive but does not normally print such an announcement, your work
|
||||||
|
based on the Program is not required to print an announcement.)
|
||||||
|
|
||||||
|
These requirements apply to the modified work as a whole. If identifiable
|
||||||
|
sections of that work are not derived from the Program, and can be reasonably
|
||||||
|
considered independent and separate works in themselves, then this License,
|
||||||
|
and its terms, do not apply to those sections when you distribute them as
|
||||||
|
separate works. But when you distribute the same sections as part of a whole
|
||||||
|
which is a work based on the Program, the distribution of the whole must be
|
||||||
|
on the terms of this License, whose permissions for other licensees extend
|
||||||
|
to the entire whole, and thus to each and every part
|
||||||
|
regardless of who wrote it.
|
||||||
|
|
||||||
|
Thus, it is not the intent of this section to claim rights or contest your
|
||||||
|
rights to work written entirely by you; rather, the intent is to exercise
|
||||||
|
the right to control the distribution of derivative or collective
|
||||||
|
works based on the Program.
|
||||||
|
|
||||||
|
In addition, mere aggregation of another work not based on the Program with
|
||||||
|
the Program (or with a work based on the Program) on a volume of a storage
|
||||||
|
or distribution medium does not bring the other work under
|
||||||
|
the scope of this License.
|
||||||
|
|
||||||
|
3. You may copy and distribute the Program (or a work based on it,
|
||||||
|
under Section 2) in object code or executable form under the terms of
|
||||||
|
Sections 1 and 2 above provided that you also do one of the following:
|
||||||
|
|
||||||
|
a) Accompany it with the complete corresponding machine-readable source
|
||||||
|
code, which must be distributed under the terms of Sections 1 and 2 above
|
||||||
|
on a medium customarily used for software interchange; or,
|
||||||
|
|
||||||
|
b) Accompany it with a written offer, valid for at least three years, to
|
||||||
|
give any third party, for a charge no more than your cost of physically
|
||||||
|
performing source distribution, a complete machine-readable copy of the
|
||||||
|
corresponding source code, to be distributed under the terms of
|
||||||
|
Sections 1 and 2 above on a medium customarily used
|
||||||
|
for software interchange; or,
|
||||||
|
|
||||||
|
c) Accompany it with the information you received as to the offer to
|
||||||
|
distribute corresponding source code. (This alternative is allowed only
|
||||||
|
for noncommercial distribution and only if you received the program in
|
||||||
|
object code or executable form with such an offer, in accord
|
||||||
|
with Subsection b above.)
|
||||||
|
|
||||||
|
The source code for a work means the preferred form of the work for making
|
||||||
|
modifications to it. For an executable work, complete source code means all
|
||||||
|
the source code for all modules it contains, plus any associated interface
|
||||||
|
definition files, plus the scripts used to control compilation and
|
||||||
|
installation of the executable. However, as a special exception, the source
|
||||||
|
code distributed need not include anything that is normally distributed
|
||||||
|
(in either source or binary form) with the major components (compiler, kernel,
|
||||||
|
and so on) of the operating system on which the executable runs, unless that
|
||||||
|
component itself accompanies the executable.
|
||||||
|
|
||||||
|
If distribution of executable or object code is made by offering access to
|
||||||
|
copy from a designated place, then offering equivalent access to copy the
|
||||||
|
source code from the same place counts as distribution of the source code,
|
||||||
|
even though third parties are not compelled to copy the source
|
||||||
|
along with the object code.
|
||||||
|
|
||||||
|
4. You may not copy, modify, sublicense, or distribute the Program except as
|
||||||
|
expressly provided under this License. Any attempt otherwise to copy, modify,
|
||||||
|
sublicense or distribute the Program is void, and will automatically terminate
|
||||||
|
your rights under this License. However, parties who have received copies,
|
||||||
|
or rights, from you under this License will not have their licenses
|
||||||
|
terminated so long as such parties remain in full compliance.
|
||||||
|
|
||||||
|
5. You are not required to accept this License, since you have not signed it.
|
||||||
|
However, nothing else grants you permission to modify or distribute the
|
||||||
|
Program or its derivative works. These actions are prohibited by law if you
|
||||||
|
do not accept this License. Therefore, by modifying or distributing the Program
|
||||||
|
(or any work based on the Program), you indicate your acceptance of this
|
||||||
|
License to do so, and all its terms and conditions for copying, distributing
|
||||||
|
or modifying the Program or works based on it.
|
||||||
|
|
||||||
|
6. Each time you redistribute the Program (or any work based on the Program),
|
||||||
|
the recipient automatically receives a license from the original licensor
|
||||||
|
to copy, distribute or modify the Program subject to these terms
|
||||||
|
and conditions. You may not impose any further restrictions on the recipients'
|
||||||
|
exercise of the rights granted herein. You are not responsible for enforcing
|
||||||
|
compliance by third parties to this License.
|
||||||
|
|
||||||
|
7. If, as a consequence of a court judgment or allegation of patent
|
||||||
|
infringement or for any other reason (not limited to patent issues),
|
||||||
|
conditions are imposed on you (whether by court order, agreement or otherwise)
|
||||||
|
that contradict the conditions of this License, they do not excuse you from
|
||||||
|
the conditions of this License. If you cannot distribute so as to satisfy
|
||||||
|
simultaneously your obligations under this License and any other pertinent
|
||||||
|
obligations, then as a consequence you may not distribute the Program at all.
|
||||||
|
For example, if a patent license would not permit royalty-free redistribution
|
||||||
|
of the Program by all those who receive copies directly or indirectly
|
||||||
|
through you, then the only way you could satisfy both it and this License
|
||||||
|
would be to refrain entirely from distribution of the Program.
|
||||||
|
|
||||||
|
If any portion of this section is held invalid or unenforceable under any
|
||||||
|
particular circumstance, the balance of the section is intended to apply
|
||||||
|
and the section as a whole is intended to apply in other circumstances.
|
||||||
|
|
||||||
|
It is not the purpose of this section to induce you to infringe any patents
|
||||||
|
or other property right claims or to contest validity of any such claims;
|
||||||
|
this section has the sole purpose of protecting the integrity of the free
|
||||||
|
software distribution system, which is implemented by public license practices.
|
||||||
|
Many people have made generous contributions to the wide range of software
|
||||||
|
distributed through that system in reliance on consistent application of
|
||||||
|
that system; it is up to the author/donor to decide if he or she is willing
|
||||||
|
to distribute software through any other system and a licensee
|
||||||
|
cannot impose that choice.
|
||||||
|
|
||||||
|
This section is intended to make thoroughly clear what is believed to be a
|
||||||
|
consequence of the rest of this License.
|
||||||
|
|
||||||
|
8. If the distribution and/or use of the Program is restricted in certain
|
||||||
|
countries either by patents or by copyrighted interfaces, the original
|
||||||
|
copyright holder who places the Program under this License may add an explicit
|
||||||
|
geographical distribution limitation excluding those countries, so that
|
||||||
|
distribution is permitted only in or among countries not thus excluded.
|
||||||
|
In such case, this License incorporates the limitation as if written
|
||||||
|
in the body of this License.
|
||||||
|
|
||||||
|
9. The Free Software Foundation may publish revised and/or new versions of the
|
||||||
|
General Public License from time to time. Such new versions will be similar
|
||||||
|
in spirit to the present version, but may differ in detail to address
|
||||||
|
new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the Program
|
||||||
|
specifies a version number of this License which applies to it and
|
||||||
|
"any later version", you have the option of following the terms and conditions
|
||||||
|
either of that version or of any later version published by the
|
||||||
|
Free Software Foundation. If the Program does not specify a version number of
|
||||||
|
this License, you may choose any version ever published
|
||||||
|
by the Free Software Foundation.
|
||||||
|
|
||||||
|
10. If you wish to incorporate parts of the Program into other free programs
|
||||||
|
whose distribution conditions are different, write to the author to ask for
|
||||||
|
permission. For software which is copyrighted by the Free Software Foundation,
|
||||||
|
write to the Free Software Foundation; we sometimes make exceptions for this.
|
||||||
|
Our decision will be guided by the two goals of preserving the free status of
|
||||||
|
all derivatives of our free software and of promoting the sharing
|
||||||
|
and reuse of software generally.
|
||||||
|
|
||||||
|
NO WARRANTY
|
||||||
|
|
||||||
|
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
|
||||||
|
THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE
|
||||||
|
STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE
|
||||||
|
PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
|
||||||
|
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
|
||||||
|
PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE,
|
||||||
|
YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
|
||||||
|
ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE
|
||||||
|
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||||
|
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE
|
||||||
|
OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA
|
||||||
|
OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES
|
||||||
|
OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF
|
||||||
|
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest possible
|
||||||
|
use to the public, the best way to achieve this is to make it free software
|
||||||
|
which everyone can redistribute and change under these terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest to attach
|
||||||
|
them to the start of each source file to most effectively convey the exclusion
|
||||||
|
of warranty; and each file should have at least the "copyright" line and a
|
||||||
|
pointer to where the full notice is found.
|
||||||
|
|
||||||
|
One line to give the program's name and a brief idea of what it does.
|
||||||
|
Copyright (C) {{ year }} {{ organization }}
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
See the GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License along
|
||||||
|
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
|
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If the program is interactive, make it output a short notice like this when
|
||||||
|
it starts in an interactive mode:
|
||||||
|
|
||||||
|
Gnomovision version 69, Copyright (C) year name of author Gnomovision
|
||||||
|
comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is
|
||||||
|
free software, and you are welcome to redistribute it under certain
|
||||||
|
conditions; type `show c' for details.
|
||||||
|
|
||||||
|
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||||
|
parts of the General Public License. Of course, the commands you use may be
|
||||||
|
called something other than `show w' and `show c'; they could even be
|
||||||
|
mouse-clicks or menu items--whatever suits your program.
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or your school,
|
||||||
|
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||||
|
Here is a sample; alter the names:
|
||||||
|
|
||||||
|
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||||
|
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||||
|
|
||||||
|
signature of Ty Coon, 1 April 1989
|
||||||
|
Ty Coon, President of Vice
|
||||||
|
|
||||||
|
This General Public License does not permit incorporating your program into
|
||||||
|
proprietary programs. If your program is a subroutine library, you may
|
||||||
|
consider it more useful to permit linking proprietary applications with
|
||||||
|
the library. If this is what you want to do, use the GNU Library General
|
||||||
|
Public License instead of this License.
|
62
Makefile
Normal file
62
Makefile
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
|
|
||||||
|
#
|
||||||
|
# Defaut values
|
||||||
|
#
|
||||||
|
KERNEL_PATH?=blob/Image
|
||||||
|
DTB_PATH?=blob/dtb
|
||||||
|
|
||||||
|
#
|
||||||
|
# Compiler defines
|
||||||
|
#
|
||||||
|
CCPREFIX?=aarch64-linux-gnu-
|
||||||
|
CC=$(CCPREFIX)gcc
|
||||||
|
CPP=$(CCPREFIX)cpp
|
||||||
|
LD=$(CCPREFIX)ld
|
||||||
|
OBJCPY=$(CCPREFIX)objcopy
|
||||||
|
|
||||||
|
#
|
||||||
|
# Compiler flags
|
||||||
|
#
|
||||||
|
CFLAGS = -march=armv8-a -Wall -nodefaultlibs \
|
||||||
|
-nostdlib -nostartfiles -fno-builtin \
|
||||||
|
-nostdinc -Wstrict-prototypes -std=gnu11 \
|
||||||
|
-Wno-main -I'./include'
|
||||||
|
|
||||||
|
#
|
||||||
|
# Split BOARD definition into 2 parts - manufacturer and codename
|
||||||
|
#
|
||||||
|
split_board := $(subst -, ,$(BOARD:%=%))
|
||||||
|
board_manu := $(word 1,$(split_board))
|
||||||
|
board_codename := $(word 2,$(split_board))
|
||||||
|
|
||||||
|
OBJ = main.o \
|
||||||
|
asm/Start.o
|
||||||
|
|
||||||
|
.PHONY: clean
|
||||||
|
|
||||||
|
#
|
||||||
|
# Syntax:
|
||||||
|
# name: dependencies-in-order
|
||||||
|
# action-to-do
|
||||||
|
#
|
||||||
|
uniLoader: uniLoader.o
|
||||||
|
$(OBJCPY) -O binary $< $@
|
||||||
|
|
||||||
|
uniLoader.o: copy-board-config $(OBJ) asm/linker.lds build-board build-soc
|
||||||
|
$(LD) $(OBJ) board.o soc.o -o $@ --script=asm/linker.lds
|
||||||
|
|
||||||
|
asm/linker.lds: asm/linker.lds.S $(KERNEL_PATH)
|
||||||
|
$(CPP) $< -DKERNEL_PATH=$(KERNEL_PATH) -DDTB_PATH=$(DTB_PATH) -P -o $@
|
||||||
|
|
||||||
|
build-board:
|
||||||
|
cd board && make
|
||||||
|
|
||||||
|
build-soc:
|
||||||
|
cd soc && make
|
||||||
|
|
||||||
|
copy-board-config:
|
||||||
|
cp include/board/board-$(board_codename).h include/board-config.h
|
||||||
|
|
||||||
|
clean:
|
||||||
|
-rm *.o asm/linker.lds asm/Start.o uniLoader board/*/*.o include/board-config.h soc/*/*.o
|
25
README.md
Normal file
25
README.md
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
# uniLoader
|
||||||
|
A simple secondary bootloader that is capable of loading Linux for Android and iOS based devices.
|
||||||
|
|
||||||
|
# Building
|
||||||
|
1. Install aarch64-linux-gnu
|
||||||
|
2. ```git clone https://github.com/ivoszbg/uniLoader```
|
||||||
|
3. ```cd uniLoader```
|
||||||
|
4. Place your kernel and device tree blobs under blob/
|
||||||
|
5. ```make BOARD=(oem)-(board-codename) SOC=(device-soc)```<br />
|
||||||
|
# Building example
|
||||||
|
```sudo apt install aarch64-linux-gnu```<br />
|
||||||
|
```git clone https://github.com/ivoszbg/uniLoader```<br />
|
||||||
|
```cd uniLoader```<br />
|
||||||
|
```cp /home/user/linux/arch/arm64/boot/Image blob/Image```<br />
|
||||||
|
```cp /home/user/linux/arch/arm64/boot/dts/exynos/exynos8895-dreamlte.dtb blob/dtb```<br />
|
||||||
|
```make BOARD=samsung-dreamlte SOC=exynos8895```
|
||||||
|
# Usage
|
||||||
|
For Apple devices: Load the generated **uniLoader** binary via PongoOs (TODO: allow loading **instead** of PongoOs)<br /><br />
|
||||||
|
For Android devices: Replace the linux kernel in your *boot.img* with the **uniLoader** binary
|
||||||
|
# Credits
|
||||||
|
VDavid003 - for his sboot wrapper<br />
|
||||||
|
Quack723 - Contributor<br />
|
||||||
|
Ivoszbg - Making this huge mess of a bootloader
|
||||||
|
# License
|
||||||
|
This project is licensed under GPL2.
|
12
asm/Start.S
Normal file
12
asm/Start.S
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
/* SPDX-License-Identifier: GPL-2.0 */
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2022, Ivaylo Ivanov <ivo.ivanov.ivanov1@gmail.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
adr x0, dtb
|
||||||
|
adr x1, kernel
|
||||||
|
b main
|
||||||
|
|
||||||
|
.global load_kernel
|
||||||
|
load_kernel:
|
||||||
|
br x4
|
28
asm/linker.lds.S
Normal file
28
asm/linker.lds.S
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
/* SPDX-License-Identifier: GPL-2.0 */
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2022, Ivaylo Ivanov <ivo.ivanov.ivanov1@gmail.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
OUTPUT_FORMAT("elf64-littleaarch64")
|
||||||
|
OUTPUT_ARCH(aarch64)
|
||||||
|
TARGET(binary)
|
||||||
|
|
||||||
|
INPUT(KERNEL_PATH)
|
||||||
|
INPUT(DTB_PATH)
|
||||||
|
|
||||||
|
SECTIONS
|
||||||
|
{
|
||||||
|
.boot : {
|
||||||
|
asm/Start.o
|
||||||
|
}
|
||||||
|
|
||||||
|
.dtb ALIGN(0x1000) : {
|
||||||
|
dtb = .;
|
||||||
|
DTB_PATH
|
||||||
|
}
|
||||||
|
|
||||||
|
.kernel ALIGN(0x1000) : {
|
||||||
|
kernel = .;
|
||||||
|
KERNEL_PATH
|
||||||
|
}
|
||||||
|
}
|
1
blob/README
Normal file
1
blob/README
Normal file
@ -0,0 +1 @@
|
|||||||
|
Folder for binary blobs, like kernel image and device tree.
|
29
board/Makefile
Normal file
29
board/Makefile
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
|
|
||||||
|
#
|
||||||
|
# Compiler defines
|
||||||
|
#
|
||||||
|
CCPREFIX?=aarch64-linux-gnu-
|
||||||
|
CC=$(CCPREFIX)gcc
|
||||||
|
CPP=$(CCPREFIX)cpp
|
||||||
|
LD=$(CCPREFIX)ld
|
||||||
|
OBJCPY=$(CCPREFIX)objcopy
|
||||||
|
|
||||||
|
#
|
||||||
|
# Compiler flags
|
||||||
|
#
|
||||||
|
CFLAGS = -march=armv8-a -Wall -nodefaultlibs \
|
||||||
|
-nostdlib -nostartfiles -fno-builtin \
|
||||||
|
-nostdinc -Wstrict-prototypes -std=gnu11 -I'../include'
|
||||||
|
|
||||||
|
#
|
||||||
|
# Split BOARD definition into 2 parts - manufacturer and codename
|
||||||
|
#
|
||||||
|
split_board := $(subst -, ,$(BOARD:%=%))
|
||||||
|
board_manu := $(word 1,$(split_board))
|
||||||
|
board_codename := $(word 2,$(split_board))
|
||||||
|
|
||||||
|
all: $(board_manu)/board-$(board_codename).o copy-board
|
||||||
|
|
||||||
|
copy-board:
|
||||||
|
cp $(board_manu)/board-$(board_codename).o ../board.o
|
10
board/samsung/board-dreamlte.c
Normal file
10
board/samsung/board-dreamlte.c
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
/* SPDX-License-Identifier: GPL-2.0 */
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2022, Ivaylo Ivanov <ivo.ivanov.ivanov1@gmail.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <board/board-dreamlte.h>
|
||||||
|
|
||||||
|
void board_init(void) {
|
||||||
|
|
||||||
|
}
|
1
include/.gitignore
vendored
Normal file
1
include/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
board-config.h
|
12
include/board/board-dreamlte.h
Normal file
12
include/board/board-dreamlte.h
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
/* SPDX-License-Identifier: GPL-2.0 */
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2022, Ivaylo Ivanov <ivo.ivanov.ivanov1@gmail.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef BOARD_DREAMLTE_H_ /* Include guard */
|
||||||
|
#define BOARD_DREAMLTE_H_
|
||||||
|
|
||||||
|
#define PAYLOAD_ENTRY 0x90000000
|
||||||
|
#define PAYLOAD_SIZE 0x2000000
|
||||||
|
|
||||||
|
#endif // BOARD_DREAMLTE_H_
|
23
include/main.h
Normal file
23
include/main.h
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
/* SPDX-License-Identifier: GPL-2.0 */
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2022, Ivaylo Ivanov <ivo.ivanov.ivanov1@gmail.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef MAIN_H_ /* Include guard */
|
||||||
|
#define MAIN_H_
|
||||||
|
|
||||||
|
extern void load_kernel(void* dtb, void* x1, void* x2, void* x3, void* kernel);
|
||||||
|
extern void soc_init(void);
|
||||||
|
extern void board_init(void);
|
||||||
|
|
||||||
|
/* Define our own 128 bit memcpy */
|
||||||
|
void memcpy(void *dest, void *src, int size)
|
||||||
|
{
|
||||||
|
unsigned __int128 *src2 = src;
|
||||||
|
unsigned __int128 *dest2 = dest;
|
||||||
|
|
||||||
|
for (int i=0; i<size/16; i++)
|
||||||
|
dest2[i] = src2[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // MAIN_H_
|
12
include/soc/exynos8895.h
Normal file
12
include/soc/exynos8895.h
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
/* SPDX-License-Identifier: GPL-2.0 */
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2022, Ivaylo Ivanov <ivo.ivanov.ivanov1@gmail.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef EXYNOS8895_H_ /* Include guard */
|
||||||
|
#define EXYNOS8895_H_
|
||||||
|
|
||||||
|
#define DECON_F_BASE 0x12860000
|
||||||
|
#define HW_SW_TRIG_CONTROL 0x70
|
||||||
|
|
||||||
|
#endif // EXYNOS8895_H_
|
18
main.c
Normal file
18
main.c
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
/* SPDX-License-Identifier: GPL-2.0 */
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2022, Ivaylo Ivanov <ivo.ivanov.ivanov1@gmail.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <main.h>
|
||||||
|
/* Device specific board config, copied in runtime */
|
||||||
|
#include <board-config.h>
|
||||||
|
|
||||||
|
void main(void* dt, void* kernel) {
|
||||||
|
/* Initialize SoC and Board specific peripherals/quirks */
|
||||||
|
soc_init();
|
||||||
|
board_init();
|
||||||
|
|
||||||
|
/* Copy kernel to memory and boot */
|
||||||
|
memcpy((void*)PAYLOAD_ENTRY, kernel, PAYLOAD_SIZE);
|
||||||
|
load_kernel(dt, 0, 0, 0, (void*)PAYLOAD_ENTRY);
|
||||||
|
}
|
38
soc/Makefile
Normal file
38
soc/Makefile
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
|
|
||||||
|
#
|
||||||
|
# Compiler defines
|
||||||
|
#
|
||||||
|
CCPREFIX?=aarch64-linux-gnu-
|
||||||
|
CC=$(CCPREFIX)gcc
|
||||||
|
CPP=$(CCPREFIX)cpp
|
||||||
|
LD=$(CCPREFIX)ld
|
||||||
|
OBJCPY=$(CCPREFIX)objcopy
|
||||||
|
|
||||||
|
#
|
||||||
|
# Compiler flags
|
||||||
|
#
|
||||||
|
CFLAGS = -march=armv8-a -Wall -nodefaultlibs \
|
||||||
|
-nostdlib -nostartfiles -fno-builtin \
|
||||||
|
-nostdinc -Wstrict-prototypes -std=gnu11 -I'../include'
|
||||||
|
|
||||||
|
#
|
||||||
|
# Split BOARD definition into 2 parts - manufacturer and codename
|
||||||
|
#
|
||||||
|
split_board := $(subst -, ,$(BOARD:%=%))
|
||||||
|
board_manu := $(word 1,$(split_board))
|
||||||
|
board_codename := $(word 2,$(split_board))
|
||||||
|
|
||||||
|
#
|
||||||
|
# Supported SoCs
|
||||||
|
#
|
||||||
|
|
||||||
|
# Exynos
|
||||||
|
ifeq ($(SOC),exynos8895)
|
||||||
|
brand_name=exynos
|
||||||
|
endif
|
||||||
|
|
||||||
|
all: $(brand_name)/$(SOC).o copy-soc
|
||||||
|
|
||||||
|
copy-soc:
|
||||||
|
cp $(brand_name)/$(SOC).o ../soc.o
|
11
soc/exynos/exynos8895.c
Normal file
11
soc/exynos/exynos8895.c
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
/* SPDX-License-Identifier: GPL-2.0 */
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2022, Ivaylo Ivanov <ivo.ivanov.ivanov1@gmail.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <soc/exynos8895.h>
|
||||||
|
|
||||||
|
void soc_init(void) {
|
||||||
|
/* Allow framebuffer to be written to */
|
||||||
|
*(int*) (DECON_F_BASE + HW_SW_TRIG_CONTROL) = 0x1281;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user